web-dev-qa-db-ja.com

活動開始時にキーボードが表示されないようにする

私はEdit Text入力を使った活動をしています。アクティビティが初期化されると、Androidキーボードが表示されます。ユーザーが入力をフォーカスするまでキーボードを非表示にするにはどうすればよいですか。

239
Fcoder

私は以下がうまくいくと思います

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

私は以前このようなことに使っていました。

405
Lucas

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

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

それ以外の場合は、マニフェストファイルのアクティビティで宣言します -

<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name=".Main"
          Android:label="@string/app_name"
          Android:windowSoftInputMode="stateHidden"
          >

adjustResizeadjustPanなどの値にAndroid:windowSoftInputModeを既に使用している場合は、次のように2つの値を組み合わせることができます。

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

これは適切なときはいつでもキーボードを隠しますが、キーボードを表示する必要がある場合はアクティビティビューをパンします。

169
Praveenkumar

テーマを使用しているすべてのアクティビティで非表示にする

<style name="MyTheme" parent="Theme">
    <item name="Android:windowSoftInputMode">stateHidden</item>
</style>

テーマを設定する

<application Android:theme="@style/MyTheme">
32
Dipesh Rathod

これら2つのプロパティを親のレイアウトに追加します(例:線形レイアウト、相対レイアウト)。

Android:focusable="false"
Android:focusableInTouchMode="false" 

それはうまくいくでしょう:)

22
King of Masses

マニフェストファイルで宣言してみてください

<activity Android:name=".HomeActivity"
      Android:label="@string/app_name"
      Android:windowSoftInputMode="stateAlwaysHidden"
      >
13
androidify

APIレベル21を使用している場合は、editText.setShowSoftInputOnFocus(false)を使用できます。

9
SaraVF

AndroidManifest.xmlに追加するだけです

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

「問題」がある.xmlレイアウトファイルの親レイアウトにこれらのコード行を記述することもできます。これがコードです。

Android:focusable="true"
Android:focusableInTouchMode="true"

例えば:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    ...
    Android:focusable="true"
    Android:focusableInTouchMode="true" >

    <EditText
        Android:id="@+id/myEditText"
        ...
        Android:hint="@string/write_here" />

    <Button
        Android:id="@+id/button_ok"
        ...
        Android:text="@string/ok" />
</LinearLayout>

重要なのは、EditTextが直接フォーカスできないようにすることです。
さようなら! ;-)

6
Jack T

私にとって最良の解決策は、あなたのクラスを貼り付ける

@Override
public void onResume() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onResume();
}

@Override
public void onStart() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onStart();
}
6
Efe ÖZYER

public static void hideKeyboard(Activity activity) { View view = activity.getCurrentFocus(); if (view != null) { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } .

AndroidManifest.xmlファイルでキーボードを非表示にします。

.

<activity
    Android:name=".MainActivity"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme"
    Android:windowSoftInputMode="stateHidden">
3
Philip Herbert

これをmanifest.xmlファイルに追加するだけです。

<activity Android:name=".MainActivity"
            Android:windowSoftInputMode="stateHidden">

あなたはすべて終わりました。

3
Androido

@Lucasによって受け入れられた答えを拡張するには

初期のライフサイクルイベントのいずれかであなたの活動からこれを呼び出します:

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

コトリンの例:

override fun onResume() {
  super.onResume()

  window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
3
Trevor.Screws

あなたは各要素のためにこのセットのユニークな属性を試すことができます

TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);

要素がフォーカスされている間、キーボードは表示されません

2
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
0
Yuliia Ashomok

これをアクティビティに追加するだけです。

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
      if (getCurrentFocus() != null) {
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
      }
      return super.dispatchTouchEvent(ev);
}
0
haythem souissi