Як видалити спливаюче поле автофокусування / клавіатури, коли з'являється екран?


105

У мене є екран, де першим полем є EditText, і він отримує фокус при запуску, також з'являється числовий тип введення, що дуже дратує

Як я можу переконатися, що при запуску діяльності фокус не набирається та / або панель вводу не піднімається?

Відповіді:


157
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

або

встановити властивість активності у файлі маніфесту, як показано нижче, у тезі програми

android:windowSoftInputMode="stateHidden"

Встановлення андроїда: windowSoftInputMode у файлі AndroidManifest.xml може бути ORED з іншими значеннями. Режим зазвичай передбачає одиничні значення, але в цьому випадку значення - це сукупність прапорів. Опис значень:Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir

145

перейдіть до файлу маніфесту вашої програми та напишіть цей рядок для тієї діяльності, яку ви хочете вимкнути.

android:windowSoftInputMode="stateHidden"

Не працювало для мене. Я помістив його в activity_main.xml. Це спрацювало ідеально, коли я помістив його в onCreate (). getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez

20

Щоб програмно не відображалася клавіатура, але віджет за замовчуванням все одно отримує фокус-дзвінок:

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

в onResume()


11
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

зателефонуйте до вищевказаного методу onCreate () . Заважає показувати softKeyboard, якщо користувач не вибере EditText bytapping or clicking.

або просто додати android:windowSoftInputMode="stateHidden"тег активності вManifest.xml


10

Зазвичай це безлад. Перше, що я намагаюся - спробувати вкрасти фокус іншим видом через. Ви також повинні мати фокусируемый і фокусируемый InTouchMode.

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>

Це працює. Я вважаю, що це більш чистий підхід, але це також залежить від ваших умов. Я приймаю цю.
JaydeepW

5

Майте інший фокус захоплення подання. За замовчуванням перший фокусується вид буде фокусуватися, коли макет завищений. Ви можете надіслати запит на фокусування на іншому представленні даних через XML:

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

Це працює для будь-якого представлення даних.

Якщо ви хочете це зробити програмно, ви можете використовувати view.requestFocus().


0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

3
Ласкаво просимо до StackOverflow! Це не так, як на інших форумах, якщо ви хочете змінити свою відповідь, просто натисніть на editпосилання та внесіть зміни. І будь ласка, спробуйте відформатувати свій код, вибравши свій код і скориставшись кнопкою зразка коду {}або натиснувши Ctrl+K.
Пітер Ланг

0

Додавання android:windowSoftInputMode="stateHidden"до своєї активності в маніфесті приховує клавіатуру лише тоді, коли ви запускаєте діяльність або як каже Google

Коли користувач ствердно рухається вперед до діяльності, а не повертається до неї через відхід від іншої діяльності

Щоб приховати клавіатуру також, коли користувач натискає кнопку "назад" і повертається до вашої активності від якоїсь іншої діяльності, використовуйте android:windowSoftInputMode="stateAlwaysHidden"


-1

я не пробував цього, і я не поруч зі своїм комп'ютером програмування, але я б підозрював, що програмно спрямований фокус на батьківський вигляд, або щось подібне могло б зробити трюк - це швидше рішення, ніж рішення, але знову не в змозі перевірити його просто думка


1
Я спробував це, але не виходить. Я .requestFocus();натиснув кнопку, і клавіатура все ще спливе.
Pentium10

думки можна додати як коментарі
Альберто М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.