当我点击切换按钮时,它会将密码字段更改为正常查看文本,但是当我再次单击它时,它不会将文本字段更改为密码类型。为什么会这样?
这是我的代码,
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.text);
chkcmd = (Button) findViewById(R.id.but3);
passtog = (ToggleButton) findViewById(R.id.tb1);
input = (EditText) findViewById(R.id.et1);
display = (TextView) findViewById(R.id.tv2);
passtog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View V) {
// TODO Auto-generated method stub
if(passtog.isChecked())
{
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
}
else if(!passtog.isChecked())
{
input.setInputType(InputType.TYPE_CLASS_TEXT);
}
}
});
答案 0 :(得分:1)
自支持库v24.2.0起。你可以轻松地解决这个问题
您需要做的只是:
将设计库添加到您的家属
dependencies {
compile "com.android.support:design:25.1.0"
}
将TextInputEditText
与TextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password_hint"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
passwordToggleEnabled
属性将使密码切换显示
在您的根布局中,请不要忘记添加xmlns:app="http://schemas.android.com/apk/res-auto"
您可以使用以下方式自定义密码切换:
app:passwordToggleDrawable
- 可绘制用作密码输入可见性切换图标
app:passwordToggleTint
- 用于密码输入可见性切换的图标
app:passwordToggleTintMode
- 用于应用背景色调的混合模式。
答案 1 :(得分:0)
除了实现ClickListener之外,您还应该使用CheckChangedListener,如下所示:
passtog.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // Save the state here if(isChecked) { input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_NUMBER_VARIATION_PASSWORD); } else { input.setInputType(InputType.TYPE_CLASS_TEXT); } } });