15 ответов:
Я думаю, что следующим может работать
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">
добавьте эти два свойства в родительский макет (например: линейный макет, относительный макет)
android:focusable="false" android:focusableInTouchMode="false"Это будет делать трюк :)
попробуйте объявить его в файле menifest
<activity android:name=".HomeActivity" android:label="@string/app_name" android:windowSoftInputMode="stateAlwaysHidden" >
просто добавьте в AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden"> </activity>
лучшее решение для меня, вставьте свой класс
@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(); }
вы также можете написать эти строки кода в макете родителя .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 не является непосредственно фокусируемым.
Пока! ; -)
функция для скрытия клавиатуры.
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">
просто добавьте это в свой манифест.xml-файл
<activity android:name=".MainActivity" 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) }
//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>
Comments