Mettre du texte constant à l'intérieur de EditText qui devrait être non modifiable - Android
Je veux avoir de la constante de texte à l'intérieur de editText comme:
http://<here_user_can_write>
L'utilisateur ne doit pas être en mesure de supprimer tous les caractères à partir de "http://
", j'ai cherché à ce sujet et trouvé ceci:
editText.setFilters(new InputFilter[] {
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
}
}
});
mais je ne sais pas s'il limite l'utilisateur à ne pas supprimer tous les caractères à partir de début à la fin limite. Je n'arrivais pas à comprendre l'utilisation de Fractionné classe.
On pourrait être un bon choix si on peut mettre un TextView
à l'intérieur de EditText
mais je ne pense pas que c'est possible dans Android, puisque ce sont deux points de Vue, est-il possible?
- Cochez cette réponse stackoverflow.com/a/19789317/983741
Vous devez vous connecter pour publier un commentaire.
A u essayer cette méthode?
startsWith
plutôt quecontains
, pour éviter que l'utilisateur de déplacer la position du curseur et taper quoi que ce soit avant la constante.C'est comment vous pouvez le faire avec un
InputFilter
:Si vous aussi vous voulez le préfixe non sélectionnable vous pouvez ajouter le code suivant.
Il y avait un léger problème avec @Rajitha Siriwardena de réponse.
Il suppose que l'ensemble de la chaîne, sauf le suffixe a été supprimé avant que le suffixe est de sens que si vous avez la chaîne
et essayer de supprimer tout ou partie de
http://
vous allez supprimerstackoverflow.com/
cehttp://
.J'ai aussi ajouté un chèque au cas où l'utilisateur tente d'entrée avant le préfixe.
Remarque: ce n'est pas gérer le cas où l'utilisateur tente de modifier le préfixe lui-même qu'avant et après.
CODE POUR AJOUTER UN PRÉFIXE PERSONNALISÉ À VOTRE EDITTEXT (PRÉFIXE NON MODIFIABLES)
Code de la Moyenne par Muzaffar Ali
Et XML
Vous l'aviez presque droit, essayer
Utilisation personnalisée
EditText
Vue de tirer le préfixe de texte et ajouter du rembourrage selon le préfixe de la taille du texte:Je sais que je suis ressusciter un vieux post, mais j'ai envie de partager avec la communauté que j'ai eu du mal avec ce sujet ces jours-ci et j'ai trouvé que le fait de placer un
TextView
sur leEditText
n'est pas seulement tout à fait faisable (pour répondre à la deuxième partie de la question), beaucoup plus, dans ce cas, lorsque la constante du texte est nécessaire dans la position de départ, mais qu'il est préférable, trop. En outre, le curseur ne sera même pas se déplacer avant que le "mutable" du texte, ce qui est un effet élégant.Je préfère cette solution car elle permet de ne pas ajouter de la charge de travail et la complexité de mon application avec les auditeurs et que ce soit.
Voici un exemple de code de ma solution:
En joignant les points de vue dans un
RelativeLayout
ils seront superposées.L'astuce ici est de jouer avec le
android:paddingStart
propriété de laEditText
, pour rendre le texte de départ juste après leTextView
, tandis queandroid:layout_centerVertical="true"
etandroid:layout_marginStart="3dp"
propriétés de laTextView
assurez-vous que son texte est correctement aligné avec le texte saisi et avec le début de la sous-jacentes de la ligne de laEditText
(ou au moins ce qui se passe lors de l'utilisation d'un Matériel thématique d'une).Celui-ci est essentiellement à ajouter le préfixe "+91" à votre champ de texte à modifier de numéro de téléphone.
1.Ajoutez ce code à oncreate() de l'activité
2.Déclarer une méthode appelée getPhoneFilter()
3.déclarer "digits_number" dans votre fichier de valeurs
Ici est moins efficace solution que doit traiter tous les cas, lorsque des caractères OU des mots sont supprimées et ajoutées dans OU autour de l'indicatif.
Code:
Vous pouvez l'utiliser comme cette
Je viens de trouver la solution comment faire préfixe non-modifiable et comment faire pour enregistrer le texte si vous essayez de supprimer le préfixe. C'est très proche de @Rajitha Siriwardena réponse. Tous que vous avez manqué à enregistrer le texte avant toute modification. Il sera restauré dans afterTextChanged(...).
Code:
Le code ci-dessous fonctionne pour moi. Il traite les cas lorsque l'utilisateur modifie le préfixe, le supprime, insère le texte à partir de la mémoire tampon, des modifications au texte sélectionné. Si l'utilisateur change le préfixe, le focus se déplace à la fin du préfixe.
Exemples:
ht5tp://localhost, 5http://localhost, http:/5/localhost -> http://5localhost
http:localhost -> http://localhost