簡體   English   中英

Android切換按鈕在密碼字段中無法正常使用

[英]Android Toggle Button not working properly for Password Field

當我單擊“切換”按鈕時,它將“密碼”字段更改為“普通外觀”文本,但是當我再次單擊它時,它不會將“文本”字段更改為“密碼類型”。 為什么會這樣 ?

這是我的代碼,

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

自支持庫v24.2.0起。 你可以很容易做到

您需要做的只是:

  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屬性將使密碼切換出現

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

  2. 您可以使用以下方法自定義密碼切換:

app:passwordToggleDrawable可繪制以用作密碼輸入可見性切換圖標。
app:passwordToggleTint用於密碼輸入可見性切換的圖標。
app:passwordToggleTintMode用於應用背景色的混合模式。

有關更多詳細信息,請參見TextInputLayout文檔

在此處輸入圖片說明

除了實現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); } } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM