Android 数字密码字段

发布于 2024-08-24 19:56:54 字数 174 浏览 5 评论 0原文

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

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

有什么建议吗?

I have an EditText field which needs to be a numeric password field. Everything works OK in portrait mode; not in landscape. When the user selects the EditText field, the UI zooms into the field and when I type all the characters are visible.

I need a numeric keyboard also. I tried setting the input type to text password|number.
If I remove "number" option everything works right; otherwise no.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

墨落画卷 2024-08-31 19:56:54

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

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

This problem can be solved without using deprecated android:password. Use the following code snippet, but do not reverse the sequence of calls:

    EditText editText = (EditText) findViewById(R.id.MyEditText);
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
゛时过境迁 2024-08-31 19:56:54

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

The simplest solution that I found for a numeric text entry that needed to be hidden (password style) was to use: android:inputType="numberPassword"

Full example that worked for me:

<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"/>
未蓝澄海的烟 2024-08-31 19:56:54

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

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

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

editText.setTypeface(Typeface.MONOSPACE);

To fix the issue where the password is visible in the landscape mode full-screen editor (as Marcus described), you can add the following line to disable the full-screen editor:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

You may also want to change the typeface to monospace to better emulate the text-password behavior:

editText.setTypeface(Typeface.MONOSPACE);
所有深爱都是秘密 2024-08-31 19:56:54

使用已弃用的

android:password="true"

可能会解决您的问题。

Using the deprecated

android:password="true"

may solve your problem.

泪冰清 2024-08-31 19:56:54

在 XML 和 XML 中尝试一下清单文件没有任何变化,

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

Try this in XML & nothing changes in manifest file,

<EditText
         android:id="@+id/etPassword"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:inputType="textPassword"
         android:singleLine="true" />
撩心不撩汉 2024-08-31 19:56:54

这是如何使输入密码有提示但不转换为 * !!。

关于 XML:

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

感谢 mango 和 rjrjr 的见解:D。

This how to make input password that has hint which not converted to * !!.

On XML :

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

thanks to : mango and rjrjr for the insight :D.

仅此而已 2024-08-31 19:56:54

试试这个:

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

更多信息此处

Try with this:

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

More info HERE

久伴你 2024-08-31 19:56:54

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

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

I think you should use android:password="true" and android:numeric="integer". But as the Android documentation states (in R.attr.html, not in the TextView docs), these are deprectated and you should use android:inputType. inputType takes flag, so you can mix mulitple possibilities. And I think android:inputType="number | password" should work for you.

You should specify android:password="true" if you want to support older devices too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文