Как скрыть мягкую клавиатуру при запуске активности



У меня есть Edittext с android:windowSoftInputMode="stateVisible" в Манифесте. Теперь клавиатура будет отображаться, когда я начинаю свою деятельность. Как это скрыть? Я не могу использовать android:windowSoftInputMode="stateHidden потому что, когда клавиатура видимая свернуть приложение и возобновить его клавиатура должна быть видна.
Я пробовал с



InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);



но это не сработало.

1162   19  

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"  

попробуйте это:

<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);

убедитесь, что вы установили ниже код EditText XML-тега.

<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
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

он работает

Comments

    Ничего не найдено.