Wyłączanie widoku edycji pełnoekranowej dla miękkiego wprowadzania klawiatury w krajobrazie?
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 (tj. chcę zobaczyć tylko samą miękką klawiaturę i mój widok za nią).
Zakładam, że można to osiągnąć za pomocą metody setExtractViewShown(false)
Na InputMethodService
, ale nie jestem w stanie uzyskać dostępu do domyślnej instancji this I nie chcę implementować niestandardowej metody wprowadzania.
Edited to add: the view to which input is nie jest to TextView
(jest to View
z niestandardową implementacją InputConnection
), więc android:imeOptions="flagNoExtractUi"
tutaj nie będzie działać.
11 answers
I w końcu odpowiedziałem na własne pytanie:
Interfejs wyciągu (tj. tryb edycji pełnoekranowej) może być wyłączony w punkcie, w którym połączenie wejściowe jest podłączone:
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;
// etc.
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-18 16:47:21
Aby to zrobić, po prostu przejdź do activity xml i wklej android:imeOptions="flagNoExtractUi"
do kodu. Hmm dość proste - ale gdzie hac to powinno być wklejone? Spójrz na kod przykładowej aktywności xml i spójrz na EditText:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:imeOptions="flagNoExtractUi"
android:id="@+id/etTextInAct"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</LinearLayout>
Jeśli chcesz więcej opcji dostosowywania klawiatury zobacz http://developer.android.com/guide/topics/ui/controls/text.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-02 06:20:03
Dodaj Właściwość android:imeOptions="flagNoExtractUi"
do każdego EditText
w pliku XML
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-13 02:19:10
Powyższa odpowiedź pomogła mi znaleźć rozwiązanie dla dynamicznie dodawanych Edittextów:
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-02 11:59:26
Użyj android:imeOptions="flagNoFullscreen"
, aby osiągnąć tę funkcję.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-25 17:28:24
Ponadto, jeśli chcesz programowo połączyć wiele imeopcji, możesz użyć składni/.
Na przykład, aby wyłączyć pełnoekranowy widok edycji w krajobrazie i zastąpić klawisz" Next "przez" OK " (ACTION_DONE) na klawiaturze, możesz użyć:
editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 09:15:49
Jeśli modyfikujesz bezpośrednio IME, możesz uniemożliwić wyświetlanie widoku wyodrębnionego przez nadpisanie onUpdateExtractingVisibility
:
@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
super.onUpdateExtractingVisibility(ei);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 02:34:23
Wiem, że jest trochę późno, ale dla każdego, kto jest nadal zainteresowany, oto moje rozwiązanie : W moim przypadku miałem Landscape Activity zawierające EditTextna górze i musiałem zaimplementować funkcję autouzupełniania w tym wyszukiwaniu Activity, które nakładanie się klawiatury spowodowało problem, że użytkownik nie mógł zobaczyć wyniku RecyclerView. Więc skończyło się na tym EditText w moim layoucie:
<EditText
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:id="@+id/main_search_et"
android:imeOptions="actionSearch|flagNoExtractUi"
android:inputType="text" />
Zdrówko!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-16 15:16:59
Możesz użyć :
android:imeOptions="flagNoFullscreen"
In your edittext
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 02:54:48
Moje rozwiązanie:
android:imeOptions="flagNoExtractUi|flagNoFullscreen"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 01:58:28
Możesz wywołać, aby ukryć miękką klawiaturę i wyczyścić ostrość z widoku wyszukiwania.
public void hideKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
super.clearFocus();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-10 15:35:58