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


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.