Я маю активність із 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.
Спробуйте оголосити це у файлі menifest
<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" ...>