私はEdit Text
入力を使った活動をしています。アクティビティが初期化されると、Androidキーボードが表示されます。ユーザーが入力をフォーカスするまでキーボードを非表示にするにはどうすればよいですか。
私は以下がうまくいくと思います
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
私は以前このようなことに使っていました。
これも試してみてください -
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"
>
adjustResize
やadjustPan
などの値にAndroid:windowSoftInputMode
を既に使用している場合は、次のように2つの値を組み合わせることができます。
<activity
...
Android:windowSoftInputMode="stateHidden|adjustPan"
...
>
これは適切なときはいつでもキーボードを隠しますが、キーボードを表示する必要がある場合はアクティビティビューをパンします。
テーマを使用しているすべてのアクティビティで非表示にする
<style name="MyTheme" parent="Theme">
<item name="Android:windowSoftInputMode">stateHidden</item>
</style>
テーマを設定する
<application Android:theme="@style/MyTheme">
これら2つのプロパティを親のレイアウトに追加します(例:線形レイアウト、相対レイアウト)。
Android:focusable="false"
Android:focusableInTouchMode="false"
それはうまくいくでしょう:)
マニフェストファイルで宣言してみてください
<activity Android:name=".HomeActivity"
Android:label="@string/app_name"
Android:windowSoftInputMode="stateAlwaysHidden"
>
APIレベル21を使用している場合は、editText.setShowSoftInputOnFocus(false)を使用できます。
AndroidManifest.xmlに追加するだけです
<activity Android:name=".HomeActivity" Android:windowSoftInputMode="stateHidden">
</activity>
「問題」がある.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が直接フォーカスできないようにすることです。
さようなら! ;-)
私にとって最良の解決策は、あなたのクラスを貼り付ける
@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();
}
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">
これをmanifest.xmlファイルに追加するだけです。
<activity Android:name=".MainActivity"
Android:windowSoftInputMode="stateHidden">
あなたはすべて終わりました。
@Lucasによって受け入れられた答えを拡張するには
初期のライフサイクルイベントのいずれかであなたの活動からこれを呼び出します:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
あなたは各要素のためにこのセットのユニークな属性を試すことができます
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
要素がフォーカスされている間、キーボードは表示されません
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
これをアクティビティに追加するだけです。
@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);
}