Comment définir le type d'entrée pour un EditText par programme? J'essaie:
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
cela ne semble pas avoir d'effet.
Comment définir le type d'entrée pour un EditText par programme? J'essaie:
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
cela ne semble pas avoir d'effet.
Réponses:
Selon les documents TextView , la version programmatique d'Android: le mot de passe est setTransformationMethod () , pas setInputType (). Donc quelque chose comme:
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
devrait faire l'affaire.
EditText
(remplace les caractères par des points de mot de passe). Cela n'a aucun effet sur ce qui est autorisé à être inscrit en EditText
soi.
Pour définir le type d'entrée pour un EditText par programme, vous devez spécifier que le type de classe d'entrée est du texte.
editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Voici les différents types d'entrée comme indiqué sur le clavier standard.
editText.setInputType(InputType.TYPE_CLASS_TEXT);
En plus, vous TYPE_CLASS_TEXT
trouverez d' autres options dans la documentation .
<EditText
android:inputType="text"
/>
En plus, vous text
trouverez d' autres options dans la documentation .
Voici le code de l'image ci-dessus.
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
List<InputTypeItem> inputTypes;
int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
initArray();
}
public void onChangeInputTypeButtonClick(View view) {
if (counter >= inputTypes.size()) {
startOver();
return;
}
textView.setText(inputTypes.get(counter).name);
editText.setInputType(inputTypes.get(counter).value);
editText.setSelection(editText.getText().length());
counter++;
}
private void startOver() {
counter = 0;
textView.setText("");
editText.setInputType(InputType.TYPE_CLASS_TEXT);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
private void initArray() {
inputTypes = new ArrayList<>();
inputTypes.add(new InputTypeItem("date", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE));
inputTypes.add(new InputTypeItem("datetime", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("none", InputType.TYPE_NULL));
inputTypes.add(new InputTypeItem("number", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("numberDecimal", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
inputTypes.add(new InputTypeItem("numberPassword", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("numberSigned", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED));
inputTypes.add(new InputTypeItem("phone", InputType.TYPE_CLASS_PHONE));
inputTypes.add(new InputTypeItem("text", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("textAutoComplete", InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE));
inputTypes.add(new InputTypeItem("textAutoCorrect", InputType.TYPE_TEXT_FLAG_AUTO_CORRECT));
inputTypes.add(new InputTypeItem("textCapCharacters", InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS));
inputTypes.add(new InputTypeItem("textCapSentences", InputType.TYPE_TEXT_FLAG_CAP_SENTENCES));
inputTypes.add(new InputTypeItem("textCapWords", InputType.TYPE_TEXT_FLAG_CAP_WORDS));
inputTypes.add(new InputTypeItem("textEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textEmailSubject", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT));
inputTypes.add(new InputTypeItem("textFilter", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER));
inputTypes.add(new InputTypeItem("textLongMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE));
inputTypes.add(new InputTypeItem("textMultiLine", InputType.TYPE_TEXT_FLAG_MULTI_LINE));
inputTypes.add(new InputTypeItem("textNoSuggestions", InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS));
inputTypes.add(new InputTypeItem("textPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("textPersonName", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME));
inputTypes.add(new InputTypeItem("textPhonetic", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC));
inputTypes.add(new InputTypeItem("textPostalAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS));
inputTypes.add(new InputTypeItem("textShortMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
inputTypes.add(new InputTypeItem("textUri", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI));
inputTypes.add(new InputTypeItem("textVisiblePassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));
inputTypes.add(new InputTypeItem("textWebEditText", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT));
inputTypes.add(new InputTypeItem("textWebEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textWebPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD));
inputTypes.add(new InputTypeItem("time", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME));
}
class InputTypeItem {
private String name;
private int value;
InputTypeItem(String name, int value) {
this.name = name;
this.value = value;
}
}
}
j'ai tout résolu avec
.setInputType(InputType.TYPE_CLASS_NUMBER);
pour voir des données claires et
.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
pour voir les points (si les données sont un nombre, ce n'est pas le choix de l'autre classe)
Cela peut être utile à d'autres comme moi qui souhaitaient basculer entre le mot de passe et le mode texte libre. J'ai essayé d'utiliser les méthodes de saisie suggérées, mais cela n'a fonctionné que dans une seule direction. Je pouvais passer du mot de passe au texte, mais je ne pouvais pas revenir en arrière. Pour ceux qui essaient de gérer une bascule (par exemple une case à cocher afficher le mot de passe), utilisez
@Override
public void onClick(View v)
{
if(check.isChecked())
{
edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
Log.i(TAG, "Show password");
}
else
{
edit.setTransformationMethod(PasswordTransformationMethod.getInstance());
Log.i(TAG, "Hide password");
}
}
Je dois créditer cela pour la solution. J'aimerais avoir trouvé ça il y a quelques heures!
Essayez d'ajouter ceci à la balise EditText / TextView dans votre mise en page
android:password="true"
Edit: Je viens de relire votre message, peut-être que vous devez le faire après la construction. Je ne vois pas pourquoi votre extrait de code ne fonctionnerait pas.
Je sais que la réponse attendue est arrivée Java
. Mais voici mes 2 cents de conseils, essayez toujours de gérer les choses liées à la vue XML
(au moins les choses de base), donc je suggérerais plutôt d'utiliser un xml
attribut plutôt que de gérer ce cas d'utilisation dansjava
<EditText
android:inputType="textPassword"/>
Cacher:
edtPassword.setInputType(InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(null);
Spectacle:
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
password.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
vous devez également veiller à ce que le curseur se déplace vers le point de départ de editText après l'appel de cette fonction, assurez-vous donc de déplacer à nouveau le curseur vers le point de fin.
field.setInputType(InputType.TYPE_CLASS_TEXT);