0

こんにちは、タブホストで TabOne、TabTwo、TabThree、TabFour という名前の 4 つのタブを使用しています。

TabOne には、検索オプションを作成するための editext があります。編集テキストを押すと、キーボードが表示されます。しかし、キーボードを閉じずに TabTwo に移動すると、キーボードがまだ表示されます。TabTwo、TabThree、TabFour でキーボードを有効にする必要はありません。他の 3 つのタブにはすべて edittext オプションがないためです。

今私の質問は、他のタブをクリックしたときにキーボードを非表示にする方法です。

以下の方法を試しましたが、

oncreateTabB のメソッドに以下のコードを追加

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Android マニフェスト ファイルに以下の xml タグを追加する

     android:windowSoftInputMode="stateAlwaysHidden"

この問題を解決するために私を導いてください。

4

4 に答える 4

1

フォーカスが失われたときに編集テキストを非表示にします。

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
   @Override
   public void onFocusChange(View v, boolean hasFocus) {
    if (!hasFocus) {
        hideKeyboard();
    }
   }

});

void hideKeyboard() {
   InputMethodManager imm = (InputMethodManager)  getSystemService(Activity.INPUT_METHOD_SERVICE);
   imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
于 2012-10-08T14:08:04.120 に答える
0
this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

この1行でうまくいきます。これをチェックしてください。

于 2013-11-23T06:21:20.480 に答える
0

これは私のために働いた:

特定のタブをクリックするとトリガーされるアクティビティで、onCreate でこれを使用しました。

inputSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() {
           @Override
           public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(inputSearch.getWindowToken(), 0);
            }
           }});

AndroidManifest.xml で、MainActivity (すべてのタブが定義されている場所) に以下を追加しました。

android:windowSoftInputMode="stateAlwaysHidden"
于 2013-05-18T20:00:07.223 に答える
0

この回答を見てください

ソフトキーボードを有効にする

inputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

ソフトキーボードを無効にする

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
于 2012-10-08T14:14:22.877 に答える