Na urządzeniach z Androidem, które używają miękkich klawiatur, chcę zapobiec wyświetlaniu widoku edycji klawiatury pełnoekranowej (pokazanego poniżej) w trybie poziomym (tzn. Chcę widzieć tylko samą klawiaturę miękką i mój widok za nią).
Zakładam, że można to osiągnąć przy użyciu tej setExtractViewShown(false)
metody InputMethodService
, ale nie mogę uzyskać dostępu do domyślnej instancji tego i nie chcę implementować niestandardowej metody wprowadzania.
Edytowano, aby dodać: widok, do którego zmierza wejście, nie jest TextView
(jest View
z niestandardową InputConnection
implementacją), więc android:imeOptions="flagNoExtractUi"
tutaj nie będzie działać.
flagNoExtractUi
lubIME_FLAG_NO_EXTRACT_UI
. Jednak w dokumentacjiIME_FLAG_NO_EXTRACT_UI
, która odpowiadaflagNoExtractUi
, stwierdza, że „Odradza się korzystanie z tej flagi i może ona stać się przestarzała w przyszłości”, podobnieflagNoFullscreen
jak zalecana opcja.Odpowiedzi:
W końcu odpowiedziałem na moje pytanie:
Interfejs wyodrębniania (tj. Tryb edycji pełnoekranowej) można wyłączyć w punkcie, w którym podłączane jest połączenie wejściowe:
źródło
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Aby to zrobić, przejdź do działania xml i wklej
android:imeOptions="flagNoExtractUi"
swój kod. Ale gdzie należy go wkleić? Spójrz na kod przykładowego działania xml i spójrz na EditText:Jeśli chcesz uzyskać więcej opcji dostosowywania klawiatury, zobacz http://developer.android.com/guide/topics/ui/controls/text.html
źródło
dodaj właściwość
android:imeOptions="flagNoExtractUi"
do każdegoEditText
w swoimXML
pliku.źródło
Powyższa odpowiedź pomogła mi znaleźć rozwiązanie dla dynamicznie dodawanych tekstów EditTexts:
źródło
Użyj,
android:imeOptions="flagNoFullscreen"
aby osiągnąć tę funkcję.źródło
IME_FLAG_NO_EXTRACT_UI
, która odpowiadaflagNoExtractUi
, stwierdza, że „NieflagNoFullscreen
zaleca się używania tej flagi i może ona stać się przestarzała w przyszłości”, podobnie jak zalecana opcja.Ponadto, jeśli chcesz programowo łączyć wiele imeOptions, możesz użyć | składnia.
Na przykład, aby wyłączyć widok edycji pełnoekranowej w orientacji poziomej i zastąpić klawisz „Dalej” klawiszem „OK” (ACTION_DONE) na klawiaturze, możesz użyć:
źródło
Jeśli bezpośrednio modyfikujesz edytor IME, możesz uniemożliwić mu wyświetlanie ExtractedView, zastępując
onUpdateExtractingVisibility
:źródło
Wiem, że jest trochę za późno, ale dla każdego, kto jest nadal zainteresowany, oto moje rozwiązanie: w moim przypadku miałem aktywność poziomą zawierającą tekst EditText i musiałem zaimplementować funkcję autouzupełniania w tym działaniu wyszukiwania , które nakłada się klawiatura spowodowała problem, że użytkownik nie widział wyniku RecyclerView . Skończyło się na tym, że miałem ten EditText w moim układzie:
Twoje zdrowie!
źródło
Moje rozwiązanie:
źródło
Możesz użyć :
w twoim tekście edycyjnym
źródło
Możesz zadzwonić, aby ukryć miękką klawiaturę i wyczyścić fokus w widoku wyszukiwania.
źródło