Как предотвратить отображение софт-клавиатуры или хотя бы ее исключить? - PullRequest
2 голосов
/ 16 декабря 2011

В моем приложении есть EditText, который, когда я нажимаю на него, чтобы ввести текст в эмуляторе, вызывает программную клавиатуру. Я не хочу, чтобы эта запутанная вещь началась с самого начала, но потом, подобно дяде с громким ртом в клетчатых штанах, не хочет уходить, и она блокирует кнопку под ним. Как (а) программатически предотвратить появление виртуальной клавиатуры или, по крайней мере, (б) высвободить ее, хотя и вручную, когда она всплывает?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2011

При условии, что пользователь не должен вводить текст, но может щелкнуть EditText, а затем добавить текст другим способом, вы можете изменить EditText на TextView и затем применить следующие три теги к нему в файле макета:

style="@android:style/Widget.EditText"
android:editable="false"  
android:focusableInTouchMode="false"

Это будет выглядеть как EditText, но вести себя как TextView.


Поскольку вы хотите, чтобы пользователь мог писать вещи в EditText, на мой взгляд, есть два решения:

  1. Оставь это. Чтобы убрать клавиатуру, достаточно нажать один раз кнопку «Назад», и каждый пользователь Android это знает. Это стандартное поведение.
  2. Оберните все, кроме Button, которое вы говорите, исчезает в ScrollView. Затем ScrollView обернет свое содержимое, чтобы позволить отображать Button между клавиатурой и ScrollView.
1 голос
/ 16 декабря 2011

Я думаю, что вам действительно нужно взглянуть на атрибут android:windowSoftInputMode в Manifest.xml Посмотрите эту ссылку .

Вы можете указать экран для панорамирования / изменения размера, чтобы показать кнопки, которые могут блокировать метод ввода.Если не показывать клавиатуру, пользователь вообще не сможет вводить текст!

1 голос
/ 16 декабря 2011

Ответ заключается в том, чтобы установить фокус на другом представлении, таком как кнопка, TextView или подобное:

// REQUEST FOCUS
viewName.setFocusableInTouchMode(true);
viewName.requestFocus();
1 голос
/ 16 декабря 2011

Просто установите android: editable = "false" для вашего EditText

...