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 に答える