Android: как сделать клавиатуру всегда видимой? - PullRequest
32 голосов
/ 02 октября 2009

В андроиде как сделать так, чтобы клавиатура устройства всегда была видна в приложении? В верхней части отображается контент, который приложение хочет отобразить, а в нижней части всегда отображается клавиатура.

Ответы [ 3 ]

46 голосов
/ 02 октября 2009

Добавьте 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

10 голосов
/ 03 сентября 2012

У вас должно быть EditText в вашем макете, и вам нужно расширить EditText базовый класс. затем переопределите метод onKeyPreIme() и верните True . Теперь ваша клавиатура будет всегда видна и не может быть отклонена клавишей Back.

Внимание : Из-за того, что ваш 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

1 голос
/ 18 февраля 2014

Я нашел способ, позволяющий сохранить видимость программной клавиатуры после редактирования в моем поле 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 в файл манифеста помогло отобразить экранную клавиатуру в начале действия, но не предотвратило ее повторное исчезновение при нажатии кнопки «Готово» после редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...