Android Edittext可见字符但没有AutoCompletion

时间:2011-10-24 18:36:12

标签: android passwords android-edittext

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

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

这很好用,但问题是如果密码很简单,键盘的自动完成可以帮助你。 有机会解决这个问题吗?

致以最诚挚的问候,

直到

2 个答案:

答案 0 :(得分:1)

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

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

这里你只是按位切换密码输入的标志,所以其他标志(mayber数字输入等)不受影响。

答案 1 :(得分:0)

试试这个: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>