マニフェストにAndroid:windowSoftInputMode="stateVisible"
を含むEdittextがあります。これで、アクティビティを開始したときにキーボードが表示されます。隠すには?キーボードが表示されたらアプリを最小化して再開するとキーボードが表示されるはずなので、Android:windowSoftInputMode="stateHidden
は使用できません。私が試した
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
しかし、うまくいきませんでした。
キーボードの表示/非表示を切り替えるには、以下の機能を使用します。
/**
* 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);
}
AndroidManifest.xml
内:
<activity Android:name="com.your.package.ActivityName"
Android:windowSoftInputMode="stateHidden" />
または試してみる
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
this もチェックしてください
これをActivityタグ内のマニフェストに入れます。
Android:windowSoftInputMode="stateHidden"
EditTextの親ビューに2つの属性を追加するだけです。
Android:focusable="true"
Android:focusableInTouchMode="true"
これを試して:
<activity
...
Android:windowSoftInputMode="stateHidden|adjustResize"
...
>
詳しくは this oneをご覧ください。
新規アクティビティの開始時やonCreate()
、onStart()
などにソフトキーボードを非表示にするには、以下のコードを使用します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
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;
}});
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>
私はこれがうまくいくことを願っています、私はたくさんの方法を試しましたが、これは私にとってfragments
でうまくいきました。この行をonCreateview/initに入れるだけです。
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
新規アクティビティの開始時または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);
}
次のコードを使用して、アクティビティを開始するときに初めてソフトキーボードを非表示にします
getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
このコードを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"/>
これも試してみてください
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
}
});
これを試して。
まず、検索可能なxmlのフィールド(名前やヒントなど)では、リテラル文字列ではなく@string
を使用します。
メソッドonCreateOptionsMenu
では、ComponentName
オブジェクトとあなたのパッケージ名と完成したクラス名(パッケージ名を含む)を持つ必要があります。 - SearchView
コンポーネントを持つアクティビティが同じである場合GoogleのAndroid開発者が言うように、検索結果を表示するにはgetComponentName()
を使用します。
私はたくさんの解決策を試してみましたが、やがてこの解決策がうまくいくように多くの仕事をしました。
これは私がしたことです:
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;
}
});
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
それは動作します
あなたのアプリケーションがAndroid APIレベル21以上をターゲットにしている場合、利用可能なデフォルトの方法があります。
editTextObj.setShowSoftInputOnFocus(false);
以下のコードをEditText
XMLタグに設定したことを確認してください。
<EditText
....
Android:enabled="true"
Android:focusable="true" />
SOFT_INPUT_STATE_HIDDENの代わりにSOFT_INPUT_STATE_ALWAYS_HIDDENを使用する
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
このプロパティをmanifastsでアクティビティに追加します
Android:windowSoftInputMode="stateHidden"
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