フォーカスの移動時の制御
EditTextにフォーカスが移ったとき、フォーカスが外れたときにソフトキーボードを表示、非表示したいことがあると思います。その際にはEditTextのオブジェクトに対してsetOnFocusChangeListenerを設定してやることでフォーカスの移動で動作を制御してやることができます。このときInputMethodManagerオブジェクトを利用することで表示・非表示を行います。
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText ed = (EditText)findViewById(R.id.ed);
ed.setOnFocusChangeListener(
new
View.OnFocusChangeListener() {
@Override
public
void
onFocusChange(View v,
boolean
hasFocus) {
InputMethodManager inputMethodManager =
(InputMethodManager) getSystemService
Context.INPUT_METHOD_SERVICE);
// フォーカスを受け取ったとき
if
(hasFocus){
// ソフトキーボードを表示する
inputMethodManager.showSoftInput(v,
InputMethodManager.SHOW_FORCED);
}
// フォーカスが外れたとき
else
{
// ソフトキーボードを閉じる
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(),
0
);
}
}
});