Android Edittext 可见字符但没有自动完成功能

发布于 2024-12-11 12:48:20 字数 419 浏览 0 评论 0原文

我有一个 EditText,它是一个密码字段。现在我想构建一个复选框,以便用户可以决定是否要查看带有 * 的密码或纯文本形式的密码。 因此我构建了

if (passwordShouldBeVisible) {
        etext_key1.setInputType(InputType.TYPE_CLASS_TEXT);
    } else {
        etext_key1.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
    }

这,效果很好,但有一个问题,如果密码很简单,键盘的自动完成功能会尝试帮助您。 有机会解决这个问题吗?

最好的问候,

直到

I'm having an EditText which is a password field. Now I want to build a checkbox so that the user can decide if he wants to see the password with * or in plain text.
Therefore I built

if (passwordShouldBeVisible) {
        etext_key1.setInputType(InputType.TYPE_CLASS_TEXT);
    } else {
        etext_key1.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
    }

This works great but has the issue that if the password is plain the auto completion of the keyboard trys to help you.
Is there a chance to fix this?

Best regards,

Till

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

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

发布评论

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

评论(2

压抑⊿情绪 2024-12-18 12:48:20

也许我迟到了,但我认为最清晰的解决方案:

EditText t =  ...;//here find your input
t.setInputType(t.getInputType() ^ EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);

在这里,您只需按位切换密码输入的标志,因此其他标志(可能是数字输入等)不会受到影响。

Maybe I am late, but I think clearest solution:

EditText t =  ...;//here find your input
t.setInputType(t.getInputType() ^ EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);

Here you just bitwise switch flag for password input, so other flags (mayber number input, etc) are untouched.

城歌 2024-12-18 12:48:20

试试这个:eText_key1.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

或者,您可以将以下内容放入 EditText 的 XML 定义中:android:inputType="textFilter"

编辑:

这是一个示例,只需确保您在切换逻辑和 xml 布局中定义设置,或者在 onCreate: 中初始化输入类型:

    setContentView(R.layout.edittext);

    Button switchButton = (Button) findViewById(R.id.switchbutton);
    final EditText editText = (EditText) findViewById(R.id.password);

    switchButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (passwordShouldBeVisible) {
                editText.setInputType(InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
            } else {
                editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD
                        | InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
            }
        }
    });

这是我正在使用的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="text|textFilter"/>

    <Button
        android:id="@+id/switchbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Switch" />

</LinearLayout>

Try this: eText_key1.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

Alternatively you can put the following in the XML definition of the EditText: android:inputType="textFilter".

EDIT:

Here's an example, just make sure you are defining the settings in your toggle logic and your xml layout, or initializing the input type in your onCreate:

    setContentView(R.layout.edittext);

    Button switchButton = (Button) findViewById(R.id.switchbutton);
    final EditText editText = (EditText) findViewById(R.id.password);

    switchButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (passwordShouldBeVisible) {
                editText.setInputType(InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
            } else {
                editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD
                        | InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
            }
        }
    });

and here's the XML file I am using:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="text|textFilter"/>

    <Button
        android:id="@+id/switchbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Switch" />

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