【问题标题】:Android numeric password fieldAndroid 数字密码字段
【发布时间】:2010-03-10 20:06:28
【问题描述】:

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

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

有什么建议吗?

【问题讨论】:

标签: android android-edittext


【解决方案1】:

无需使用已弃用的android:password 即可解决此问题。使用以下代码 sn -p,但不要颠倒调用顺序:

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

【讨论】:

  • 当然,但不知何故不如简单的 android:password="true" 清晰。我想知道他们为什么弃用它。
  • 不知何故这似乎不适用于 2.3.x 。转向横向,密码仍然可见,如 Mar 所述。
  • 我刚刚发现editText.setSingleLine(true);editText.setTransformationMethod() 之后导致点停止显示!!
【解决方案2】:

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

【讨论】:

  • numberKeyboard 不会弹出“只有数字”软键盘。
【解决方案3】:

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

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

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

editText.setTypeface(Typeface.MONOSPACE);

【讨论】:

  • 虽然这在小型设备上看起来不太好,但这绝对是一种隐藏密码的方法。
【解决方案4】:

使用已弃用的

android:password="true"

可能会解决您的问题。

【讨论】:

【解决方案5】:

在 XML 中试试这个,清单文件中没有任何变化,

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

【讨论】:

  • 这如何限制数字输入?
【解决方案6】:

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

关于 XML:

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

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

【讨论】:

    【解决方案7】:

    试试这个:

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

    更多信息HERE

    【讨论】:

      【解决方案8】:

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

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

      【讨论】:

      • 查看 dtmilano 的回答,以及我提供的上一个问题的链接,其中涵盖了这些要点。不幸的是,将两者都传递给 inputType 不起作用。
      猜你喜欢
      • 1970-01-01
      • 2012-12-11
      • 2012-03-20
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多