web-dev-qa-db-ja.com

活動開始時にソフトキーボードを隠す方法

マニフェストにAndroid:windowSoftInputMode="stateVisible"を含むEdittextがあります。これで、アクティビティを開始したときにキーボードが表示されます。隠すには?キーボードが表示されたらアプリを最小化して再開するとキーボードが表示されるはずなので、Android:windowSoftInputMode="stateHiddenは使用できません。私が試した

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

しかし、うまくいきませんでした。

139
Aju

キーボードの表示/非表示を切り替えるには、以下の機能を使用します。

/**
 * Hides the soft keyboard
 */
public void hideSoftKeyboard() {
    if(getCurrentFocus()!=null) {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
}

/**
 * Shows the soft keyboard
 */
public void showSoftKeyboard(View view) {
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    view.requestFocus();
    inputMethodManager.showSoftInput(view, 0);
}
198
Sherif elKhatib

AndroidManifest.xml内:

<activity Android:name="com.your.package.ActivityName"
          Android:windowSoftInputMode="stateHidden"  />

または試してみる

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

this もチェックしてください

337
Neenu

これをActivityタグ内のマニフェストに入れます。

  Android:windowSoftInputMode="stateHidden"  
35
Saneesh

EditTextの親ビューに2つの属性を追加するだけです。

Android:focusable="true"
Android:focusableInTouchMode="true"
35
mani

これを試して:

<activity
    ...
    Android:windowSoftInputMode="stateHidden|adjustResize"
    ...
>

詳しくは this oneをご覧ください。

25
Adnan

新規アクティビティの開始時やonCreate()onStart()などにソフトキーボードを非表示にするには、以下のコードを使用します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
14

AndroidManifest.xmlを使う

<activity Android:name=".YourActivityName"
      Android:windowSoftInputMode="stateHidden"  
 />

Javaを使う

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

上記の解決策のキーボードを使用すると、アクティビティーが作成されたときにはフォーカスが隠れるがedittextはフォーカスされなくなりますが、次のようにタッチしたときにはそれをつかみます。

あなたのに追加EditText

<EditText
Android:focusable="false" />

あなたのEditTextのリスナーも追加する

youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.setFocusable(true);
    v.setFocusableInTouchMode(true);
    return false;
}});
7
Atif Amin

Xmlファイルに次のテキストを追加してください。

<!--Dummy layout that gain focus -->
            <LinearLayout
                Android:layout_width="0dp"
                Android:layout_height="0dp"
                Android:focusable="true"
                Android:focusableInTouchMode="true"
                Android:orientation="vertical" >
            </LinearLayout>
7
Hits

私はこれがうまくいくことを願っています、私はたくさんの方法を試しましたが、これは私にとってfragmentsでうまくいきました。この行をonCreateview/initに入れるだけです。

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
6
Mubashar

新規アクティビティの開始時またはonCreate()、onStart()メソッドなどでソフトキーボードを非表示にするには、以下のコードを使用します。

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

Buttonの時にソフトキーボードを非表示にするには、アクティビティをクリックします。

View view = this.getCurrentFocus();

    if (view != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        assert imm != null;
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
5
Adam

次のコードを使用して、アクティビティを開始するときに初めてソフトキーボードを非表示にします

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
4
Geeta Gupta

このコードをJavaファイルに入れて、objectの引数をedittextに渡します。

private void setHideSoftKeyboard(EditText editText){
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

AndroidManifest.xmlに設定を設定できます

例:

<activity
    Android:name="Activity"
    Android:configChanges="orientation|keyboardHidden"
    Android:theme="@*Android:style/Theme.NoTitleBar"
    Android:launchMode="singleTop"
    Android:windowSoftInputMode="stateHidden"/>
4
Long Nguyen

これも試してみてください

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});
3
ritesh4326

これを試して。

まず、検索可能なxmlのフィールド(名前やヒントなど)では、リテラル文字列ではなく@stringを使用します。

メソッドonCreateOptionsMenuでは、ComponentNameオブジェクトとあなたのパッケージ名と完成したクラス名(パッケージ名を含む)を持つ必要があります。 - SearchViewコンポーネントを持つアクティビティが同じである場合GoogleのAndroid開発者が言うように、検索結果を表示するにはgetComponentName()を使用します。

私はたくさんの解決策を試してみましたが、やがてこの解決策がうまくいくように多くの仕事をしました。

2
toktokwho

これは私がしたことです:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
        yourEditText.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.onTouchEvent(event);   // handle the event first
                InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);  // hide the soft keyboard
                    yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
                }
                return true;
            }
        });
2
mangu23
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

それは動作します

2
user8356857

あなたのアプリケーションがAndroid APIレベル21以上をターゲットにしている場合、利用可能なデフォルトの方法があります。

editTextObj.setShowSoftInputOnFocus(false);

以下のコードをEditText XMLタグに設定したことを確認してください。

<EditText  
    ....
    Android:enabled="true"
    Android:focusable="true" />
2
Harpreet

SOFT_INPUT_STATE_HIDDENの代わりにSOFT_INPUT_STATE_ALWAYS_HIDDENを使用する

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
1
Brinda Rathod

このプロパティをmanifastsでアクティビティに追加します

Android:windowSoftInputMode="stateHidden" 
1
yousef
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

this one worked for me
0
user3024334