2011年7月7日木曜日

[Android] チェックボックスでパスワードの表示/非表示を切り替える

このエントリーをはてなブックマークに追加

パスワードをテキスト画面に入力する際,「******」のようにパスワードを隠ぺいして表示しますが,スマートフォンでは,入力がタップであるため,よく押し間違いをしてしまいます.
そういう時には,仕方ないのでパスワードをそのまま表示します.ここでは,パスワードの表示
・非表示をチェックボックスの状態で切り替える方法を紹介します.

main.xml










ChangeInputTypeActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.EditText;

public class ChangeInputTypeActivity extends Activity {
private EditText et;
private CheckBox cb;
private int defaultIType;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

et = (EditText) findViewById(R.id.editText);
defaultIType = et.getInputType();
et.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | defaultIType);

cb = (CheckBox) findViewById(R.id.checkBox);
cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(cb. isChecked())
et.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | defaultIType);
else
et.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | defaultIType);
// チェックボックスをクリックするとカーソルが先頭にきてしまうので,末尾に戻す
et.setSelection(et.getText().length());
}
});
}
}


パスワードの表示・非表示は,setInputTypeメソッドを用いて変更します.ここでは,初期値のInputTypeをdefaultITypeとして保持をしておき,チェックボックスがON/OFFされた場合に,27行目から30行目で変更処理を行います.