Как скрыть мягкую клавиатуру при запуске активности
У меня есть Edittext с android:windowSoftInputMode="stateVisible" в Манифесте. Теперь клавиатура будет отображаться, когда я начинаю свою деятельность. Как это скрыть? Я не могу использовать android:windowSoftInputMode="stateHidden потому что, когда клавиатура видимая свернуть приложение и возобновить его клавиатура должна быть видна.
Я пробовал с
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
но это не сработало.
19 ответов:
используйте следующие функции для отображения / скрытия клавиатуры:
/** * 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); }
на
AndroidManifest.xml:<activity android:name="com.your.package.ActivityName" android:windowSoftInputMode="stateHidden" />или попробовать
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);пожалуйста, проверьте этой и
просто добавьте два атрибута в родительское представление editText.
android:focusable="true" android:focusableInTouchMode="true"
попробуйте это:
<activity ... android:windowSoftInputMode="stateHidden|adjustResize" ... >посмотреть этой для более подробной информации.
чтобы скрыть softkeyboard в момент начала новой деятельности или
onCreate(),onStart()etc. вы можете использовать код ниже:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
добавьте следующий текст в 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>
Я надеюсь, что это будет работать, я пробовал много методов, но этот работал для меня в
fragments. просто поместите эту строку в onCreateview / init.getActivity().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
вы можете установить config на AndroidManifest.xml
пример:
<activity android:name="Activity" android:configChanges="orientation|keyboardHidden" android:theme="@*android:style/Theme.NoTitleBar" android:launchMode="singleTop" android:windowSoftInputMode="stateHidden"/>
чтобы скрыть softkeyboard во время запуска нового действия или onCreate(),onStart() метод и т.д. используйте код ниже:
getActivity().getWindow().setSoftInputMode(WindowManager. LayoutParams.SOFT_INPUT_STATE_HIDDEN);чтобы скрыть softkeyboard в момент кнопки, нажмите в activity:
View view = this.getCurrentFocus(); if (view != null) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); assert imm != null; imm.hideSoftInputFromWindow(view.getWindowToken(), 0); }
поместите этот код в свой java-файл и передайте аргумент object в edittext,
private void setHideSoftKeyboard(EditText editText){ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); }
используйте следующий код, чтобы скрыть softkeyboard в первый раз при запуске действия
getActivity().getWindow().setSoftInputMode(WindowManager. LayoutParams.SOFT_INPUT_STATE_HIDDEN);
вот что я сделал:
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; } });
попробуйте это.
сначала в вашем XML с возможностью поиска поля (Имя и подсказка и т. д.) ставят
@stringи не литеральные строки.метод
onCreateOptionsMenu, он должен иметьComponentNameобъект с вашим именем пакета и вашим завершенным именем класса (с именем пакета) - в случае действия, которое имеетSearchViewкомпонент такой же, как показать результаты поиска использоватьgetComponentName(), как говорит разработчик google android.Я пробовал много решений, и после много,много работы в этом решение работает для меня.
попробуйте и этот
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 } });
Если ваше приложение предназначено для Android API Уровень 21 или более чем доступен метод по умолчанию.
editTextObj.setShowSoftInputOnFocus(false);убедитесь, что вы установили ниже код
EditTextXML-тега.<EditText .... android:enabled="true" android:focusable="true" />
используя AndroidManifest.xml
<activity android:name=".YourActivityName" android:windowSoftInputMode="stateHidden" />используя Java
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);С помощью приведенного выше решения клавиатуры скрыть, но edittext от принятия фокуса при создании activiy, но захватить его, когда вы касаетесь их с помощью:
добавить в свой 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; }});
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
Comments