В android, как мы делаем клавиатуру устройства всегда видимой в приложении? Верхняя часть отображает содержимое, которое приложение хочет визуализировать, а нижняя часть всегда отображает клавиатуру.
Android: Как сделать клавиатуру всегда видимой?
Ответ 1
Добавить андроид: 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
Ответ 2
В вашем макете должен быть 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);
}
}
Ответ 3
Я нашел способ, который работает для меня, чтобы сохранить мягкую клавиатуру видимой после редактирования в моем поле 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
в файл манифеста помогло отобразить мягкую клавиатуру при запуске активности, но это не помешало ей исчезнуть снова всякий раз, когда после нажатия кнопки "Готово" было нажато после редактирования.