Как отключить окно предварительного просмотра клавиатуры SoftKeyboard?

17

При создании собственного SoftKeyboard вам предоставляется «предварительный просмотр ключа» по умолчанию.

Как отключить это?

Изменить:

Вы можете настроить макет keyPreview , изменив атрибут <KeyboardView> android:keyPreviewLayout . По умолчанию это стиль, чтобы просмотреть keyboard_key_preview. XML :

Изменить 2: Следуя за моей красной селедкой:

Исходный код предполагает предоставление 0 или не применение тега android:keyPreviewLayout , что не приведет к появлению предварительного просмотра ключа:

    ...
    case com.android.internal.R.styleable.KeyboardView_keyPreviewLayout:
        previewLayout = a.getResourceId(attr, 0);
        break; 
    ...
    if (previewLayout != 0) {
        mPreviewText = (TextView) inflate.inflate(previewLayout, null);
        mPreviewTextSizeLarge = (int) mPreviewText.getTextSize();
        mPreviewPopup.setContentView(mPreviewText);
        mPreviewPopup.setBackgroundDrawable(null);
    } else {
        mShowPreview = false;
    }  

Я пробовал:

  • В стиле KeyboardView без keyPreviewLayout (странно, хотя замена этого значения изменила стиль предварительного просмотра.)
  • Я сделал ссылку keyPreviewLayout идентификатором со значением 0 (что вызывает сбой при инфляции).

Тупик. :( Любая помощь будет принята с благодарностью!

    
задан Graeme 14.10.2011 в 17:43
источник

3 ответа

16

Есть метод:

public void setPreviewEnabled(boolean previewEnabled)

Но я не знаю, какая версия API начинается с.

    
ответ дан Rob Myers 25.10.2011 в 10:47
  • начинается с версии API 3 –  Axarydax 14.06.2012 в 07:56
  • Это реализовано в объекте KeyboardView. См. Javadoc developer.android.com/reference/android/inputmethodservice Ошибка –  fishjd 31.03.2017 в 21:28
0

Вы пробовали это:

public static mEmptyView;

//somewhere where you have the context:
mEmptyView = new View(context);

@Override public View onCreateCandidatesView() {
    return mEmptyView;
}

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

    
ответ дан Franziskus Karsunke 18.10.2011 в 13:04
  • Это останавливает появление всей мягкой клавиатуры. Я возвращаю null как стандарт: InputMethodService.onCreateCandidatesView () –  Graeme 18.10.2011 в 13:19
  • Кроме того, рекомендуется, чтобы вы никогда не ставили View в качестве статических членов класса, так как представление будет содержать ссылку на своих предков и может быстро нарастить утечки памяти. –  Graeme 18.10.2011 в 15:31
  • Да, лучше создать его в методе ... Я тоже об этом подумал. У сборщика мусора больше, чем нужно, но лучше сбор мусора, чем утечки памяти ^^ –  Franziskus Karsunke 18.10.2011 в 17:45
0

Другой способ - добавить в xml - android: keyPreviewLayout="@ null"

<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:keyPreviewLayout="@null"
    android:visibility="gone"
    />
    
ответ дан Yuliia Ashomok 29.02.2016 в 17:28
  • с ошибкой нулевого указателя –  Abk 06.11.2017 в 13:45