Ответ 1
Я думаю, что следующее может работать
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Я использовал его для этого раньше.
У меня есть активность с входом 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"
>
Если вы уже использовали android:windowSoftInputMode
для значения типа adjustResize
или adjustPan
, вы можете объединить два значения, например:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Это скроет клавиатуру, если это необходимо, но панорамируйте вид активности в случае, если клавиатура должна быть показана.
Скрыть его для всех действий с помощью темы
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
установите тему
<application android:theme="@style/MyTheme">
Добавьте эти два свойства в родительский макет (например: Linear Layout, Relative Layout)
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();
}
Просто добавьте это в свой файл manifest.xml
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden">
Вы все сделали.
Функция скрытия клавиатуры.
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);
}
}
Скрыть клавиатуру в файле AndroidManifext.xml.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
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);
}
Это происходит, когда EditText - это первое представление для получения Фокуса, когда начинается ваша активность. Таким образом, вы можете надежно решить эту проблему без кода, просто установив исходный фокус на другой вид. Вы можете сделать это в XML, не требуется код.
Пример:
<Button
android:id="@+id/mybutton">
<requestFocus />
</Button>