Deaktivieren Sie den Autofokus beim Bearbeiten von Text

Lesezeit: 5 Minuten

Benutzer-Avatar
Saad

Ich habe einen Bearbeitungstext:

   <LinearLayout android:id="@+id/linearLayout7" android:layout_width="match_parent" android:layout_height="wrap_content">
        <EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1" android:id="@+id/editText1" android:text="3">
            <requestFocus></requestFocus>
        </EditText>
        <Button android:text="Button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button2"></Button>
    </LinearLayout>

und dann einige andere Sachen darunter

Das Problem, das ich habe, ist, dass der Fokus direkt beim Start der App auf der Eingabe liegt. Ich möchte nicht, dass der Fokus direkt beim Start der App auf der Eingabe liegt.

Ich habe versucht, die zu entfernen

<requestFocus></requestFocus>

Ding und es hat nichts getan.

  • Setzen Sie android:focusable=”false”. Es wird sich nicht auf Ihren EditText konzentrieren

    – Nishant Shah

    29. September 2011 um 7:33 Uhr

  • das wird für immer un-facusable machen? Jetzt wird es nicht fokussiert, selbst wenn ich auf das Textfeld klicke. Ich möchte beim Anklicken fokussieren, nur nicht automatisch beim Start der App

    – Saad

    29. September 2011 um 7:41 Uhr

  • Sie können zunächst mit der ID der Schaltfläche beginnen und den Fokus auf die Schaltfläche in Ihrem Code setzen….

    – Hanni

    29. September 2011 um 7:42 Uhr

  • Ich habe dies getan: a_button = (Button) findViewById(R.id.a_button); a_button.requestFocus(); direkt am Anfang des Codes, aber es hat nichts bewirkt. Kann ich den Fokus über XML setzen?

    – Saad

    29. September 2011 um 8:04 Uhr

  • Hinzufügen android:focusableInTouchMode="true" auf meinem übergeordnetes Layout funktioniert bei mir.

    – Marcelo Gracietti

    12. Mai 2017 um 15:05 Uhr


Benutzer-Avatar
Mudassir

Ergänzen Sie die android:focusable="true" und android:focusableInTouchMode="true" Elemente im übergeordneten Layout von Text bearbeiten wie folgt;

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

Ich denke, es sollte dir helfen.

Siehe auch;
Offizieller Leitfaden für Android-Entwickler zum Umgang mit Berührungen und Eingaben

  • @Saad: Es funktioniert. Ich habe es getestet, bevor ich es hier gepostet habe. Behalten Sie das Element am Anfang der XML-Datei bei. Übrigens, für welche API-Ebene (oder Android-Version) entwickeln Sie?

    – Mudasir

    30. September 2011 um 3:42 Uhr

  • gut. Können Sie erklären, wofür android:focusable und android:focusableInTouchMode verwendet werden (ich meine den Unterschied und die Verwendung).

    – Anoop

    14. Januar 2015 um 7:25 Uhr

  • Fügen Sie dies auch dem übergeordneten Element hinzu, wenn es nicht funktioniert hat: android:descendantFocusability="beforeDescendants"

    – A. Rager

    1. November 2016 um 18:02 Uhr


  • Es funktioniert, aber wenn ich auf den Bearbeitungstext klicke, erscheint die Tastatur nicht!

    – Träumerei_ss

    11. August 2018 um 14:09 Uhr

  • @reverie_ss Sie haben Recht, ich habe auch das gleiche Problem.

    – Ahesanali Suthar

    26. Juli 2020 um 10:29 Uhr

Wenn Sie den Standardfokus auf den Bearbeitungstext löschen möchten, verwenden Sie die folgenden 2 Attribute

android:focusable="false"
 android:focusableInTouchMode="true"

innerhalb des übergeordneten linearen Layouts.

zum Beispiel:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="true"
            android:orientation="vertical">


     <EditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="email id"
         android:inputType="textEmailAddress"
         android:maxLines="1"
    />

</LinearLayout>

Wenn Sie die Tastatur bei der Aktivitätserstellung ausblenden möchten, verwenden Sie diese Attribute beispielsweise im Aktivitäts-Tag der Manifestdatei:

 <activity
     android:configChanges="screenSize|orientation|keyboardHidden"
     android:screenOrientation="portrait"
     android:name=".activities.LoginActivity"
     android:windowSoftInputMode="stateHidden|adjustResize"/>

Wenn Sie die Tastatur beim Klicken auf eine Schaltfläche oder bei einem Ereignis ausblenden möchten, verwenden Sie den folgenden Code

 public void onClick(View v) {
                try {
                    //InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm.isAcceptingText()) {
                        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }

Wenn Sie den Fokus von Textfeldern nach dem Verlassen der Aktivität entfernen möchten

@Override
    protected void onResume() {
        super.onResume();
        mEmail.clearFocus();
        mPassword.clearFocus();
}

Und schließlich, wenn Sie die Daten in den Bearbeitungstextfeldern beim Absenden des Formulars löschen möchten

 @Override
    protected void onResume() {
        super.onResume();
        mEmail.getText().clear();
        mPassword.getText().clear();
    }

KEINE weitere Arbeit … fügen Sie einfach android:windowSoftInputMode=”stateAlwaysHidden” zum Aktivitätstag der Manifest.xml-Datei hinzu.

  • Bitte erklären Sie, was dies bewirkt und wie es dem OP helfen kann. Vorschläge ohne Erklärung helfen nicht viel, selbst wenn der Fix funktionieren könnte.

    – SuperBiasedMan

    10. August 2016 um 14:28 Uhr

  • Verweisen Sie auf diesen .. den obigen Link .. .

    – Nishanth S Babu

    12. August 2016 um 11:25 Uhr

  • Dadurch wird die Tastatur ausgeblendet, aber der EditText behält immer noch den Fokus, wenn ich mich richtig erinnere.

    – A. Rager

    1. November 2016 um 18:00 Uhr

  • API 27 alle genannten Methoden funktionieren nicht!

    – Jaroslaw Dukal

    11. Juni 2019 um 10:00 Uhr

<LinearLayout 
    android:focusable="true"
    android:focusableInTouchMode="true" 
    android:layout_width="0px"
    android:layout_height="0px" />

 <EditText android:text="" 
    android:id="@+id/EditText01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:hint="@string/hint">
 </EditText>

Keine weitere Codierung erforderlich, es ist eine einfache und übersichtliche Lösung.

Benutzer-Avatar
Manisch Singh

Sie können den ausgeblendeten Fenster-Soft-Input-Modus zum Ausblenden der Tastatur und verwenden android:focusable="false" und android:focusableInTouchMode="true"

<activity
    android:name=".MainActivity"
    android:windowSoftInputMode="stateHidden"
    android:label="@string/app_name"
    >

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Versuchen Sie diesen Code in LinearLayout

 <LinearLayout
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText

            android:hint="Search..."
            android:drawableRight="@drawable/ic_search"
            android:id="@+id/search_tab_hotbird_F"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyHotbird_F"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="4dp">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>

Benutzer-Avatar
Tarit Ray

Es hat bei mir funktioniert, Wish wird dir auch helfen.

Entweder :

android:windowSoftInputMode="stateAlwaysHidden"

Fügen Sie diese Eigenschaft zu Ihrer Manifest.xml-Datei unter der spezifischen Aktivität hinzu, bei der Sie den Autofokus deaktivieren möchten.
Nachteile: Es wird nur Ihre Soft-Tastatur verbergen, der Cursor wird immer noch da sein.

Anders :

 android:focusableInTouchMode="true"

Fügen Sie diese Eigenschaft zu Ihrer UI-XML-Datei (unter dem übergeordneten Layout) hinzu, sodass der Fokus auch auf der Tastatur ausgeblendet wird.

1283920cookie-checkDeaktivieren Sie den Autofokus beim Bearbeiten von Text

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy