39

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

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

有什么建议么?

4

8 回答 8

61

这个问题可以在不使用 deprecated 的情况下解决android:password。使用以下代码片段,但不要颠倒调用顺序:

    EditText editText = (EditText) findViewById(R.id.MyEditText);
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
于 2010-10-25T12:38:00.943 回答
18

对于需要隐藏的数字文本条目(密码样式),我发现的最简单的解决方案是使用: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"/>
于 2014-01-02T01:37:05.410 回答
6

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

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

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

editText.setTypeface(Typeface.MONOSPACE);
于 2011-11-02T17:44:00.443 回答
3

使用已弃用的

android:password="true"

可以解决你的问题。

于 2010-03-10T23:45:27.543 回答
1

在 XML 中尝试此操作,并且清单文件中没有任何变化,

<EditText
         android:id="@+id/etPassword"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:inputType="textPassword"
         android:singleLine="true" />
于 2013-04-03T07:01:32.333 回答
0

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

在 XML 上:

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

感谢:mango 和 rjrjr 的洞察力:D。

于 2013-10-11T06:46:00.140 回答
0

试试这个:

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

更多信息在这里

于 2018-06-22T21:20:50.580 回答
-2

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

您应该指定android:password="true"是否也想支持旧设备。

于 2010-03-19T10:54:55.407 回答