Frage Wie Keypad Popup deaktivieren, wenn auf Edittext?


In meiner App ist die erste Ansicht aller meiner Bildschirme ein EditText, also erscheint jedes Mal, wenn ich auf einen Bildschirm gehe, die Bildschirmtastatur. Wie kann ich diese Popup-Funktion deaktivieren und aktivieren, wenn Sie manuell auf EditText ???

    eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);

    eT.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {

            if(hasFocus){
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
            imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
            }
        }
    });

XML-Code:

<ImageView
    android:id="@+id/feedPageLogo"
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:src="@drawable/wic_logo_small" />

<Button
    android:id="@+id/goButton_feed"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="@string/go" />

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/goButton_feed"
    android:layout_toRightOf="@id/feedPageLogo"
    android:hint="@string/search" />

<TextView
    android:id="@+id/feedLabel"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/feedPageLogo"
    android:gravity="center_vertical|center_horizontal"
    android:text="@string/feed"
    android:textColor="@color/white" />

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ButtonsLayout_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <Button
        android:id="@+id/feedButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/feed"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/iWantButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/iwant"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/shareButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/share"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/profileButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/profile"
        android:textColor="@color/black" />
</LinearLayout>

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/feedListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/ButtonsLayout_feed"
    android:layout_below="@id/feedLabel"
    android:textSize="15dp" >
</ListView>

Die dritte Ansicht (EditText) ist der Fokus.


75
2018-05-16 04:02


Ursprung


Antworten:


Die beste Lösung liegt in der Projektmanifest-Datei (AndroidManifest.xml), füge das folgende Attribut in das activity bauen

android: windowSoftInputMode = "stateHidden"


Beispiel:

    <activity android:name=".MainActivity" 
              android:windowSoftInputMode="stateHidden" />

Beschreibung: 

  • Der Status der Soft-Tastatur - ob versteckt oder sichtbar -, wenn die Aktivität zum Fokus der Aufmerksamkeit des Benutzers wird.
  • Die am Hauptfenster der Aktivität vorgenommene Anpassung - ob die Größe der Größe der Anzeige verkleinert wird, um Platz für die Softtastatur zu schaffen, oder ob der Inhalt geschwenkt wird, um den aktuellen Fokus sichtbar zu machen, wenn ein Teil des Fensters von der Bildschirmtastatur abgedeckt wird.

Eingeführt in: 

  • API-Stufe 3

Link zu den Dokumenten

Hinweis: Hier festgelegte Werte (außer "stateUnspecified" und "adjustUnspecified") überschreiben Werte, die im Design festgelegt wurden.


159
2017-12-17 04:53



Sie müssen eine Ansicht oberhalb des EditText erstellen, die einen "falschen" Fokus hat:

Etwas wie :

<!-- Stop auto focussing the EditText -->
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@android:color/transparent"
    android:focusable="true"
    android:focusableInTouchMode="true">
</LinearLayout>

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:inputType="text" />

In diesem Fall habe ich ein LinearLayout verwendet, um den Fokus anzufordern. Hoffe das hilft.

Das hat perfekt funktioniert ... dank Zaggo0


81
2018-05-16 07:44



     edittext.setShowSoftInputOnFocus(false);

Jetzt können Sie jede benutzerdefinierte Tastatur verwenden, die Sie mögen.


25
2018-03-28 03:43



Fügen Sie den folgenden Code zu Ihrer Aktivitätsklasse hinzu.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Die Tastatur wird eingeblendet, wenn der Benutzer auf EditText klickt


20
2018-02-06 11:57



Die Leute haben hier viele großartige Lösungen vorgeschlagen, aber ich habe diese einfache Technik mit meinem EditText verwendet (nichts in Java und AnroidManifest.xml ist erforderlich). Setzen Sie Ihren fokussierbaren und fokussierbaren InTouchMode direkt auf EditText auf false.

 <EditText
        android:id="@+id/text_pin"
        android:layout_width="136dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:textAlignment="center"
        android:inputType="numberPassword"
        android:password="true"
        android:textSize="24dp"
        android:focusable="false"
        android:focusableInTouchMode="false"/>

Meine Absicht hier ist, dieses Eingabefeld in der App-Lock-Aktivität zu verwenden, wo ich den Benutzer auffordere, die PIN einzugeben, und ich möchte mein benutzerdefiniertes PIN-Pad anzeigen. Getestet mit minSdk = 8 und maxSdk = 23 in Android Studio 2.1

enter image description here


14
2017-11-16 14:42



Sie können den folgenden Code zum Deaktivieren der OnScreen-Tastatur verwenden.

InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(editText.getWindowToken(), 0);

9
2018-05-16 04:06



Zwei einfache Lösungen:

Erste Lösung wird unterhalb der Codezeile in der Manifest-XML-Datei hinzugefügt. Fügen Sie in der Manifestdatei (AndroidManifest.xml) das folgende Attribut im Aktivitätskonstrukt hinzu

android: windowSoftInputMode = "stateHidden"

Beispiel:

<activity android:name=".MainActivity" 
          android:windowSoftInputMode="stateHidden" />

Zweite Lösung Fügt unterhalb der Codezeile eine Aktivität hinzu

//Block auto opening keyboard  
  this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Wir können jede Lösung von oben verwenden. Vielen Dank


7
2017-10-17 04:45