Android EditText用法大全
3338 ワード
EditTextはAndroidの基本コントロールの一つで、使用頻度が非常に高い.
よくある使用上の問題は次のとおりです.
1.EditTextを編集できないようにするにはどうすればいいですか?
これは、トップページの検索ボックスによく見られます.検索ボックスをクリックしてから本当に検索ページにジャンプしますが、このときの検索ボックスは入力できません.
方法:レイアウトでfocusAbleをfalseに設定します.次のようになります.
2.ページに入るときにキーボードを自動的にイジェクトしない方法
EditText付きのページレイアウトでは、デフォルトでEditTextにページフォーカスを取得させ、ページに入ると自動的にキーボードがポップアップされます.
方法:レイアウトのEditTextに焦点を失わせるには、親ノードが積極的に焦点を得るなど、他のViewに焦点を強制的に割り当てるのが一般的です.
つまり、親ノードのプロパティに2つの文を追加します.
次のようになります.
3.ページに入るときにキーボードを自動的にイジェクトするにはどうすればいいですか?
通常、ページ内にEditTextがあれば、ページに入るとキーボードが自動的にポップアップします.しかし、それが異常になったとき、弾けなかったらどうしますか?方法もある.
方法:手動で表示および非表示にします.
たとえば、ページのonCreateメソッドで、あるviewのpostメソッドでInputMethodManagerを呼び出すメソッドを遅延させ、ページにキーボードをポップアップさせます.
ここでは、主に次の属性があります.
3.1. imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); キーボードがウィンドウに表示されている場合は非表示になり、逆に表示されます.
3.2.強制表示または非表示:
EditTextのクリックイベントを埋め込み統計する場合があります.編集可能なEditTextの場合、最初のクリックでEditTextがフォーカスされ、フォーカスを取得した後のクリックでsetOnClickListenerのコールバックが呼び出されます.この場合、setOnTouchListenerを使用して統計をとることをお勧めします.
よくある使用上の問題は次のとおりです.
1.EditTextを編集できないようにするにはどうすればいいですか?
これは、トップページの検索ボックスによく見られます.検索ボックスをクリックしてから本当に検索ページにジャンプしますが、このときの検索ボックスは入力できません.
方法:レイアウトでfocusAbleをfalseに設定します.次のようになります.
2.ページに入るときにキーボードを自動的にイジェクトしない方法
EditText付きのページレイアウトでは、デフォルトでEditTextにページフォーカスを取得させ、ページに入ると自動的にキーボードがポップアップされます.
方法:レイアウトのEditTextに焦点を失わせるには、親ノードが積極的に焦点を得るなど、他のViewに焦点を強制的に割り当てるのが一般的です.
つまり、親ノードのプロパティに2つの文を追加します.
android:focusable="true"
android:focusableInTouchMode="true"
次のようになります.
......
3.ページに入るときにキーボードを自動的にイジェクトするにはどうすればいいですか?
通常、ページ内にEditTextがあれば、ページに入るとキーボードが自動的にポップアップします.しかし、それが異常になったとき、弾けなかったらどうしますか?方法もある.
方法:手動で表示および非表示にします.
たとえば、ページのonCreateメソッドで、あるviewのpostメソッドでInputMethodManagerを呼び出すメソッドを遅延させ、ページにキーボードをポップアップさせます.
if (ll_content_root.getVisibility() == View.VISIBLE) {
ll_content_root.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 500);
}
ここでは、主に次の属性があります.
3.1. imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); キーボードがウィンドウに表示されている場合は非表示になり、逆に表示されます.
3.2.強制表示または非表示:
private void handleKeyboard(boolean isShow) {
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (!isShow) {
if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
if (getCurrentFocus() != null)
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
} else {
if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) {
if (getCurrentFocus() != null)
manager.showSoftInput(et_note, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
4.EditTextのクリックイベントについて.EditTextのクリックイベントを埋め込み統計する場合があります.編集可能なEditTextの場合、最初のクリックでEditTextがフォーカスされ、フォーカスを取得した後のクリックでsetOnClickListenerのコールバックが呼び出されます.この場合、setOnTouchListenerを使用して統計をとることをお勧めします.