Android数字密码字段

时间:2010-03-10 20:06:28

标签: android android-edittext

我有一个EditText字段,需要是一个数字密码字段。在肖像模式下一切正常;不在风景中。当用户选择EditText字段时,UI会缩放到该字段中,当我键入时,所有字符都可见。

我也需要一个数字键盘。我尝试将输入类型设置为文本密码。 如果我删除“数字”选项一切正常;否则没有。

有什么建议吗?

8 个答案:

答案 0 :(得分:61)

无需使用已弃用的android:password即可解决此问题。使用以下代码段,但不要反转调用序列:

    EditText editText = (EditText) findViewById(R.id.MyEditText);
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

答案 1 :(得分:16)

我发现需要隐藏的数字文本条目(密码样式)的最简单的解决方案是使用:android:inputType="numberPassword"

对我有用的完整示例:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyLargeTextBox"
    android:background="@android:drawable/editbox_background_normal"
    android:id="@+id/txtWebServicePIN"
    android:layout_row="3"
    android:layout_column="2"
    android:layout_columnSpan="2"
    android:minWidth="100dp"
    android:maxWidth="100dp"
    android:inputType="numberPassword"
    android:maxLength="6"/>

答案 2 :(得分:6)

要修复在横向模式全屏编辑器中显示密码的问题(如Marcus所述),您可以添加以下行以禁用全屏编辑器:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

您可能还希望将字体更改为等宽字体以更好地模拟文本密码行为:

editText.setTypeface(Typeface.MONOSPACE);

答案 3 :(得分:3)

使用已弃用的

android:password="true"

可能会解决您的问题。

答案 4 :(得分:1)

在XML&amp;清单文件中没有任何变化,

<EditText
         android:id="@+id/etPassword"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:inputType="textPassword"
         android:singleLine="true" />

答案 5 :(得分:0)

如何输入具有未转换为* !!的提示的输入密码。

在XML上:

android:inputType="textPassword"
android:gravity="center"
android:ellipsize="start"
android:hint="Input Password !."

感谢:芒果和rjrjr的见解:D。

答案 6 :(得分:0)

尝试一下:

EditText input = (EditText) findViewById(R.id.input);
input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

更多信息HERE

答案 7 :(得分:-2)

我认为你应该使用android:password="true"android:numeric="integer"。但是,正如Android文档所述(在R.attr.html中,而不在TextView文档中),这些文档已被删除,您应该使用android:inputType。 inputType采用标志,因此您可以混合多种可能性。我认为android:inputType="number | password"应该适合你。

如果您也想支持旧设备,则应指定android:password="true"