Как скрыть Soft Keyboard при запуске активности
У меня есть Edittext с android:windowSoftInputMode="stateVisible"
в манифесте. Теперь клавиатура будет показана, когда я начну свою деятельность. Как скрыть это? Я не могу использовать android:windowSoftInputMode="stateHidden
, потому что, когда клавиатура видна, свернуть приложение и возобновить его, клавиатура должна быть видимой.
Я пробовал с помощью
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
но это не сработало.
Ответы
Ответ 1
Для отображения/скрытия клавиатуры используйте следующие функции:
/**
* 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);
}
Ответ 2
В AndroidManifest.xml
:
<activity android:name="com.your.package.ActivityName"
android:windowSoftInputMode="stateHidden" />
или попробуйте
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Пожалуйста, проверьте это также
Ответ 3
Просто добавьте два атрибута в родительский вид editText.
android:focusable="true"
android:focusableInTouchMode="true"
Ответ 4
Поместите это в манифест внутри тега Activity
android:windowSoftInputMode="stateHidden"
Ответ 5
Попробуйте следующее:
<activity
...
android:windowSoftInputMode="stateHidden|adjustResize"
...
>
Посмотрите этот для более подробной информации.
Ответ 6
Чтобы скрыть экранную клавиатуру во время запуска новой активности или onCreate()
, onStart()
и т.д., вы можете использовать следующий код:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 7
Добавьте следующий текст в ваш 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>
Ответ 8
Использование 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;
}});
Ответ 9
Я надеюсь, что это сработает, я пробовал много методов, но этот работал у меня в fragments
. просто поместите эту строку в onCreateview/init.
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 10
Чтобы скрыть экранную клавиатуру во время запуска New Activity или onCreate(), onStart() и т.д., Используйте следующий код:
getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Чтобы скрыть экранную клавиатуру во время нажатия кнопки, щелкните в действии:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
assert imm != null;
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Ответ 11
Поместите этот код в свой Java файл и передайте аргумент для объекта в edittext,
private void setHideSoftKeyboard(EditText editText){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
Ответ 12
Вы можете установить конфигурацию на AndroidManifest.xml
Пример:
<activity
android:name="Activity"
android:configChanges="orientation|keyboardHidden"
android:theme="@*android:style/Theme.NoTitleBar"
android:launchMode="singleTop"
android:windowSoftInputMode="stateHidden"/>
Ответ 13
Используйте следующий код, чтобы скрыть панель программных клавиш при первом запуске Activity
getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Ответ 14
Попробуйте это тоже
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
}
});
Ответ 15
Это то, что я сделал:
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;
}
});
Ответ 16
Попробуйте это.
Сначала в вашем поисковом xml поля (имя и подсказка и т.д.) поместите @string
, а не литералы.
Затем метод onCreateOptionsMenu
должен иметь объект ComponentName
с вашим именем пакета и вашим завершенным именем класса (с именем пакета). - В случае, когда активность с компонентом SearchView
совпадает с показами результатов поиска используйте getComponentName()
, как говорит разработчик Google Android.
Я пробовал много решений, и после многого, много работы это решение работает для меня.
Ответ 17
Если ваше приложение предназначено для Android API уровня 21 или более, чем есть метод по умолчанию.
editTextObj.setShowSoftInputOnFocus(false);
Убедитесь, что вы установили код ниже в теге EditText
XML.
<EditText
....
android:enabled="true"
android:focusable="true" />
Ответ 18
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
он будет работать
Ответ 19
Используйте SOFT_INPUT_STATE_ALWAYS_HIDDEN вместо SOFT_INPUT_STATE_HIDDEN
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 20
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
Ответ 21
добавить в свою деятельность в манифестах это свойство
android:windowSoftInputMode="stateHidden"