Frage

Auf Android-Geräten, die Soft-Tastaturen verwenden, möchte ich die Vollbild-Tastatur verhindern Ansicht Bearbeitung (siehe unten) angezeigt wird, wenn im Querformat (dh ich will selbst nur die Soft-Tastatur sehen, und meiner Meinung nach dahinter).

gehe ich davon aus dem erreicht werden kann, die setExtractViewShown(false) Methode auf InputMethodService, aber ich bin nicht in der Lage die Standardinstanz von dieser für den Zugriff auf und will nicht eine benutzerdefinierte Eingabemethode implementieren.

Android Vollbild-Bearbeitung Ansicht

Edited hinzufügen:. die Ansicht, den Eingang geht, ist kein TextView (es ist ein View mit einer benutzerdefinierten InputConnection Implementierung), so android:imeOptions="flagNoExtractUi" wird hier nicht funktionieren

War es hilfreich?

Lösung

I schließlich , antwortete meine eigene Frage:

Der Extrakt UI (das heißt, die Vollbild-Editiermodus) kann, bei dem an der Stelle gesperrt wird der Eingangsanschluss angeschlossen ist:

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}

Andere Tipps

Um das zu tun, dorthin zu navigieren Aktivität xml und fügen android:imeOptions="flagNoExtractUi" in Ihrem Code. Aber wo sollte es eingefügt werden? Haben Blick auf Code beispiel Aktivität xml und Blick auf 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>

Wenn Sie mehr Anpassungsmöglichkeiten für die Tastatur wollen sehen http: / /developer.android.com/guide/topics/ui/controls/text.html

fügen Sie die Eigenschaft android:imeOptions="flagNoExtractUi" zu jedem EditText in Ihrer XML Datei.

Die Antwort oben hat mir geholfen, die Lösung herauszufinden, für dynamisch hinzugefügt EditTexts:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

Verwenden android:imeOptions="flagNoFullscreen" diese Funktion zu erreichen.

Auch wenn Sie programaticaly mehrere imeOptions kombinieren möchten, können Sie die Verwendung | Syntax.

Zum Beispiel, um die Vollbild-Bearbeitungsansicht in der Landschaft deaktivieren und auf „Weiter“ Taste „OK“ (ACTION_DONE) in Tastatur zu ersetzen, können Sie verwenden:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

Wenn Sie die IME direkt sind modifizieren Sie es jemals eine ExtractedView Anzeige durch Überschreiben verhindern onUpdateExtractingVisibility :

@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
    ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
    super.onUpdateExtractingVisibility(ei);
}

Ich weiß, es ist ein wenig spät, aber für alle, die immer noch daran interessiert ist, hier ist meine Lösung: In meinem Fall hatte ich eine Landschaft Aktivität , das eine EditText an der Spitze der es und ich brauchte Funktion zum automatischen Vervollständigung bei dieser Suche Aktivität , zu implementieren, die der überlappende Tastatur verursachte ein Problem, dass der Benutzer nicht Ergebnis von RecyclerView sehen konnte, . So beenden ich dieses mit bis EditText in meinem Layout:

<EditText
  android:layout_width="match_parent"
  android:layout_height="?actionBarSize"
  android:id="@+id/main_search_et"
  android:imeOptions="actionSearch|flagNoExtractUi"
  android:inputType="text"  />

Cheers!

Sie können mit:

android:imeOptions="flagNoFullscreen" 

in Ihrem EditText

Meine Lösung:

android:imeOptions="flagNoExtractUi|flagNoFullscreen"

Sie können auch anrufen Soft-Tastatur und klare Fokussierung von Search zu verbergen.

public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

super.clearFocus();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top