У меня есть активность с Edit Text
входом. Когда действие инициализировано, отображается клавиатура Android. Как клавиатура может оставаться скрытой, пока пользователь не сфокусирует ввод?
android:windowSoftInputMode="adjustPan"
?
У меня есть активность с Edit Text
входом. Когда действие инициализировано, отображается клавиатура Android. Как клавиатура может оставаться скрытой, пока пользователь не сфокусирует ввод?
android:windowSoftInputMode="adjustPan"
?
Ответы:
Я думаю, что следующее может работать
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Я использовал это для такого рода вещей раньше.
EditText
? :) Это чтобы скрыть клавиатуру, когда начинается активность, которая содержитEditText
Попробуйте это также -
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">
Добавьте эти два свойства в родительский макет (например: линейный макет, относительный макет)
android:focusable="false"
android:focusableInTouchMode="false"
Это сделает свое дело :)
true
работу, согласно ответу Джека Т. Было ли изменение поведения в последних версиях?
false
должна работать, поскольку идея состоит в том, чтобы отвлечь внимание от полей EditText.
Попробуйте объявить это в файле описания
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Просто добавьте в 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 содержится в другом макете:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
Ключ должен удостовериться, что 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);
}
}
Скрыть клавиатуру в файле 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);
}
<activity android:windowSoftInputMode="stateHidden" ...>