В android как сделать так, чтобы клавиатура устройства всегда была видна в приложении? В верхней части отображается контент, который приложение хочет отобразить, а в нижней части всегда отображается клавиатура.
Android: Как сделать так, чтобы клавиатура всегда была видна?
Ответы (3)
Добавьте android: windowSoftInputMode = "stateAlwaysVisible" в свою активность в файле AndroidManifest.xml:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
В моем тестовом приложении это показывает клавиатуру при запуске приложения, хотя она там не исправлена, но ее можно закрыть, нажав кнопку «Назад».
Чтобы клавиатура всегда была видна, вам, возможно, придется создать собственную клавиатуру как часть пользовательского интерфейса вашего приложения. Вот руководство, которое покажет вам, как это сделать с помощью KeyboardView: http://www.fampennings.nl/maarten/android/09keyboard/index.htm
У вас должен быть EditText
в вашем макете и он должен расширять EditText
базовый класс. затем переопределить метод onKeyPreIme()
и вернуть True. Теперь ваша клавиатура всегда будет видна, и ее нельзя будет закрыть клавишей «Назад».
Внимание. Поскольку ваш onKeyPreIme()
метод возвращает true
, вы не можете выйти из приложения, используя клавишу возврата.
Пример:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
onKeyPreIme () - разработчик Android
Я нашел способ, который позволяет мне оставлять виртуальную клавиатуру видимой после редактирования в моем поле myEditText
класса EditText
. Уловка состоит в том, чтобы переопределить метод onEditorAction
так, чтобы он возвращал true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
в противном случае onEditorAction
возвращайте true
только после нажатия клавиши «Готово» ( IME_ACTION_DONE
) в противном случае false
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
(см. также этот ответ о методе onEditorAction
)
Добавление android:windowSoftInputMode="stateAlwaysVisible
в файл манифеста помогло отобразить виртуальную клавиатуру в начале действия, но не помешало ей снова исчезнуть при нажатии клавиши «Готово» после редактирования.