1

当我单击切换按钮时,它会将密码字段更改为正常外观的文本,但是当我再次单击它时,它不会将文本字段更改为密码类型。为什么呢 ?

这是我的代码,

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);
}
}
});
4

2 回答 2

1

由于支持库 v24.2.0。你可以很容易地做到这一点

你需要做的只是:

  1. 将设计库添加到您的依赖项

    dependencies {
         compile "com.android.support:design:25.1.0"
    }
    
  2. 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属性将使密码切换出现

  1. 在您的根布局中不要忘记添加xmlns:app="http://schemas.android.com/apk/res-auto"

  2. 您可以使用以下方法自定义密码切换:

app:passwordToggleDrawable- 可绘制用作密码输入可见性切换图标。
app:passwordToggleTint- 用于密码输入可见性切换的图标。
app:passwordToggleTintMode- 用于应用背景色调的混合模式。

TextInputLayout 文档中的更多详细信息。

在此处输入图像描述

于 2016-12-15T11:54:18.503 回答
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);
         }
     }
  });
于 2013-02-27T10:49:08.320 回答