如何以编程方式设置EditText的输入类型?我尝试:
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
这似乎没有任何效果。
尝试将此添加到布局中的EditText/TextView标签
android:password="true"
编辑:我刚刚重读了你的帖子,也许你需要在施工后这样做。我不明白你的片段为什么不管用。
根据TextView文档, android:password的编程版本是setTransformationMethod (),而不是setInputType()。比如:
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
应该能行。
要以编程方式设置EditText的输入类型,必须指定输入类类型为文本。
editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
只允许数字:
password1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER);
转换(隐藏)密码:
password1.setTransformationMethod(PasswordTransformationMethod.getInstance());
我已经解决了所有问题
.setInputType(InputType.TYPE_CLASS_NUMBER);
为看清楚的数据和
.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
看这些点(如果数据是数字,它不是其他类的选择)
editText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
//你可以改变TYPE_…根据您的要求。
我知道预期的答案在Java。但这里有我2分的建议,总是尝试在XML中处理视图相关的东西(至少是基本的东西),所以我建议宁愿使用xml属性,而不是在java中处理这个用例
Java
XML
xml
java
<EditText android:inputType="textPassword"/>
这可能对像我这样想在密码和自由文本模式之间切换的人有帮助。我尝试使用建议的输入法,但它只在一个方向上工作。我可以从密码切换到文本,但无法还原。对于那些试图处理切换(例如显示密码复选框)使用
@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"); } }
我不得不相信这的解决方案。真希望我几个小时前就发现了!
下面是标准键盘上显示的各种输入类型。
editText.setInputType(InputType.TYPE_CLASS_TEXT);
除了TYPE_CLASS_TEXT之外的其他选项可以在文档. xml中找到。
TYPE_CLASS_TEXT
<EditText android:inputType="text" />
除了text之外的其他选项可以在文档. xml中找到。
text
下面是上面图像的代码。
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; } } }
InputType
芬兰湾的科特林:
val password = EditText(this) password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD password.hint = "Password"
取消隐藏密码:
editText.setInputType( InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
再次隐藏密码:
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
隐藏:
edtPassword.setInputType(InputType.TYPE_CLASS_TEXT); edtPassword.setTransformationMethod(null);
显示:
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
你还必须小心光标移动到editText的起始点 调用此函数后,请确保再次将光标移动到结束点。< / p >
field.setInputType(InputType.TYPE_CLASS_TEXT);
InputType将不工作,最简单的方法是setTransfromationMethod()
显示密码
edittextPassword.setTransformationMethod(null);
再次隐藏密码
edittextPassword.setTransformationMethod(new PasswordTransformationMethod());
我的回答不是对这个问题的直接回答。对于大多数情况,上述答案中的任何一个都应该是正确的。然而,没有一个对我的情况有帮助。
我在我的项目中有一个自定义的ViewGroup,其中包含标题的文本和EditText。这个EditText接收文本,数字,密码,电话等取决于案件和正在使用的地方。视图组的Caller应该告诉输入类型是什么。
重要的:设置inputType应该是EditText的最后一组(或者至少它必须在设置EditText的Text之后),否则,没有效果。