我有一个EditText,它是一个密码字段。现在我想构建一个复选框,以便用户可以决定是否要使用 * 或纯文本查看密码。 因此我建立了
if (passwordShouldBeVisible) {
etext_key1.setInputType(InputType.TYPE_CLASS_TEXT);
} else {
etext_key1.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
}
这很好用,但问题是如果密码很简单,键盘的自动完成可以帮助你。 有机会解决这个问题吗?
致以最诚挚的问候,
直到
答案 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>