2013-02-27 69 views
1

當我單擊切換按鈕時,它將密碼字段更改爲正常查看文本,但是當我再次點擊它時,它不會將文本字段更改爲密碼類型。爲什麼 ?Android切換按鈕無法在密碼字段中正常工作

這裏是我的代碼,

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

use Input.TYPE_CLASS_TEXT | Input.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,而不是僅使用Input.TYPE_CLASS_TEXT – Waqas 2013-02-27 10:44:15

回答

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

由於支持庫v24.2.0。你可以achivie這很容易

您需要做的僅僅是:

  1. 設計庫一起添加到您的依賴條件

    dependencies { 
        compile "com.android.support:design:25.1.0" 
    } 
    
  2. 使用TextInputEditTextTextInputLayout

    <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 - 用於應用背景色調的混合模式。

    更多詳細信息在TextInputLayout documentation

    enter image description here