Wie erstelle ich EditText mit der Schaltfläche cross(x) am Ende?

Lesezeit: 6 Minuten

Wie erstelle ich EditText mit der Schaltflache crossx am Ende
Arun Badole

Gibt es ein Widget wie EditText die eine Kreuzschaltfläche enthält, oder gibt es eine Eigenschaft für EditText wodurch es automatisch erstellt wird? Ich möchte, dass die Kreuztaste den geschriebenen Text löscht EditText.

  • Scheint kein Standard-Widget dafür zu sein. Aber Sie finden ein paar verschiedene Ansätze mit einer Google-Suche nach “android edittext clear button x”. Also ich denke, “Clear Buttons” nennen sie es. Siehe auch diese Antwort auf eine verwandte Frage: stackoverflow.com/questions/4175398/clear-edittext-on-click/…

    – HostileFork sagt, vertraue SE nicht

    15. Juni 11 um 08:51 Uhr

  • Hier können Sie die Quelle herunterladen: github.com/GhOsTTT/editTextXbutton schönen Tag noch

    – Gökhan Musapaşaoğlu ヅ

    28. Januar 14 um 08:38 Uhr

  • Eine andere Frage, die im Wesentlichen ein Duplikat ist, ist Implementieren Sie uitextfield-Eigenschaften in Android

    – Alex Cohn

    11. Mai 15 um 20:43 Uhr

Wie erstelle ich EditText mit der Schaltflache crossx am Ende
Jaydeep Khamar

Verwenden Sie das folgende Layout:

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="9dp"
    android:padding="5dp">

    <EditText
        android:id="@+id/calc_txt_Prise"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"  
        android:layout_marginTop="20dp"
        android:textSize="25dp"
        android:textColor="@color/gray"
        android:textStyle="bold"
        android:hint="@string/calc_txt_Prise"
        android:singleLine="true" />

    <Button
        android:id="@+id/calc_clear_txt_Prise"      
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_gravity="right|center_vertical"
        android:background="@drawable/delete" />

</FrameLayout>

Sie können auch die ID der Schaltfläche verwenden und jede gewünschte Aktion mit ihrer onClickListener-Methode ausführen.

  • Dies ist eine ineffiziente Vorgehensweise. Die Antwort von Yanchenko ist der richtige Ansatz zur Verwendung zusammengesetzter Drawables.

    – numan salati

    10. April 13 um 15:48 Uhr

  • Wenn Sie sich für diese Lösung entscheiden und feststellen, dass das Bild viel zu stark gestreckt ist, sollten Sie wahrscheinlich einen ImageButton anstelle eines normalen Buttons verwenden.

    – personne3000

    23. April 13 um 14:53 Uhr

  • Obwohl diese Lösung “ineffizient” ist, ist sie für blinde Benutzer viel zugänglicher. Die Verwendung eines Drawable zwingt Ihre Benutzer, sehr komplizierte Vorgänge zum Löschen des Textes durchzuführen – etwas, das sehende Benutzer schnell mit der X-Schaltfläche ausführen können.

    – Daniel Monteiro

    02.09.15 um 20:18 Uhr

  • Was ist die Ineffizienz daran?

    – Deny

    4. Februar 18 um 19:13 Uhr

Wie erstelle ich EditText mit der Schaltflache crossx am Ende
kevoroid

2020-Lösung über Material Design Components für Android:

Fügen Sie Ihrem Gradle-Setup Materialkomponenten hinzu:

Suchen Sie hier nach der neuesten Version: https://maven.google.com/

implementation 'com.google.android.material:material:1.3.0'

oder wenn Sie nicht auf die Verwendung von AndroidX-Bibliotheken aktualisiert haben, können Sie sie auf diese Weise hinzufügen:

implementation 'com.android.support:design:28.0.0'

Dann

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_text"
    app:endIconMode="clear_text">

  <com.google.android.material.textfield.TextInputEditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

</com.google.android.material.textfield.TextInputLayout>

Beachten: app:endIconMode=”clear_text”

Wie hier besprochen Materialdesign-Dokumente

  • Dies sollte die neue akzeptierte Antwort sein. In meinem Fall konnte ich nicht implementieren, ohne auf AndroidX-Bibliotheken zu aktualisieren.

    – Ben

    20. Juni 19 um 21:17 Uhr

  • @Ben (Daumen hoch)

    – kevoroid

    25. Juni 19 um 10:18 Uhr

  • Bitte lesen Sie unbedingt die Dokumentation durch, da noch nicht alle XML-Attribute unterstützt werden. Möglicherweise müssen Sie die Quell- oder Commit-Meldungen durchsehen, da sich dort manchmal die genauen Implementierungsdetails befinden. Ich hatte diese Art von Problem für ein benutzerdefiniertes endIcon. Eine Commit-Nachricht ergab, dass das XML-Attribut noch keine Implementierung hatte, die es unterstützte. Muss einen anderen Ansatz verwenden, bis die Implementierung abgeschlossen ist

    – M. Smith

    4. Dezember 19 um 18:40 Uhr

  • Beste Antwort im Jahr 2020.

    – Sam Chen

    11. April 20 um 4:01 Uhr

  • funktioniert app:endIconMode=”clear_text” mit <androidx.appcompat.widget.AppCompatEditText/> ? kannst du mir bitte dabei helfen

    – Arbaz.in

    21. April 2020 um 9:26 Uhr


1643916789 632 Wie erstelle ich EditText mit der Schaltflache crossx am Ende
Yanchenko

Wenn Sie zufällig verwenden DroidPartshabe ich gerade hinzugefügt ClearableEditText.

So sieht es aus, wenn ein benutzerdefinierter Hintergrund und ein klares Symbol eingestellt sind abs__ic_clear_holo_light von ActionBarSherlock:

Geben Sie hier die Bildbeschreibung ein

  • Beste Lösung, da sich die Klasse erweitert EditText. Danke @yanchenko

    – tbruyelle

    5. Mai ’13 um 16:45 Uhr


  • @Stephanek. Ich habe dies im Entwicklungszweig behoben, wird Teil der Version 1.4.3 sein.

    – Jantschenko

    16. Juli 13 um 22:22 Uhr

  • Danke! Es wäre jedoch wirklich cool, wenn Sie auch eine ClearableAutoCompleteTextView in DroidParts einfügen könnten. Für andere Benutzer, die dies ebenfalls versuchen: Verwenden Sie die DroidParts-Bibliothek, kopieren Sie den Code von ClearableEditText und erweitern Sie einfach AutoCompleteTextView.

    – RobinDeCroon

    16. Februar 14 um 15:13 Uhr


  • Das ist Bombe! Sie können es auch eigenständig verwenden, indem Sie die TextWatcherAdapter-Abhängigkeit mit einem normalen TextWatcher ändern.

    – Pimentoso

    17. Dezember 14 um 14:02 Uhr

  • @yanchenko Hatte einen Blick auf Ihre Implementierung. Es scheint, als gäbe es einen kleinen Kompromiss zwischen dem eher kleinen akzeptierten Berührungsbereich und einem Bearbeitungstext mit einer größeren als der Standardhöhe, der Berührungsereignisse entlang der y-Achse innerhalb des Bearbeitungstextes akzeptiert. Ihre Implementierung war die erstere und meine die letztere. Würden Sie unter ähnlichen Umständen empfehlen, dasselbe zu tun? dh wählen Sie ein kleineres Hit-Feld, das falsch gedrückt werden könnte, oder haben Sie ein größeres Hit-Feld, bei dem bei einem expandierenden oder größeren Bearbeitungstext das Drücken weit außerhalb der Grenzen des Drawable liegen könnte.

    – Jack.Ramsden

    15. Januar 16 um 09:12 Uhr

1643916790 773 Wie erstelle ich EditText mit der Schaltflache crossx am Ende
Gulschan

Dies ist eine Kotlin-Lösung. Fügen Sie diese Hilfsmethode in eine Kotlin-Datei ein.

fun EditText.setupClearButtonWithAction() {

    addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(editable: Editable?) {
            val clearIcon = if (editable?.isNotEmpty() == true) R.drawable.ic_clear else 0
            setCompoundDrawablesWithIntrinsicBounds(0, 0, clearIcon, 0)
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
    })

    setOnTouchListener(View.OnTouchListener { _, event ->
        if (event.action == MotionEvent.ACTION_UP) {
            if (event.rawX >= (this.right - this.compoundPaddingRight)) {
                this.setText("")
                return@OnTouchListener true
            }
        }
        return@OnTouchListener false
    })
}

Und verwenden Sie es dann wie folgt in der onCreate Methode und Sie sollten gut zu gehen sein-

yourEditText.setupClearButtonWithAction()

BTW, müssen Sie hinzufügen R.drawable.ic_clear oder zuerst das Löschsymbol. Dieser ist von Google- https://fonts.google.com/icons?s selected=Material%20Icons%20Outlined%3Aclear%3A

Die Support-Bibliothek von Android hat eine SearchView Klasse, die genau das tut. (Nicht abgeleitet von EditText aber, also müssen Sie a verwenden SearchView.OnQueryTextListener anstelle einer TextWatcher)

Suchansicht ohne Text (und Hinweistext „Suchen“)

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie in XML so:

  <android.support.v7.widget.SearchView
            android:id="@+id/searchView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:iconifiedByDefault="false"
            android:queryHint="@string/SearchHint"
            app:iconifiedByDefault="false"
            app:queryHint="@string/SearchHint" />

1643916791 369 Wie erstelle ich EditText mit der Schaltflache crossx am Ende
Eamorr

Drawable x = getResources().getDrawable(R.drawable.x);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
mEditText.setCompoundDrawables(null, null, x, null);

wobei x ist:

Geben Sie hier die Bildbeschreibung ein

Für drawable resource Sie können Standard-Android-Bilder verwenden:

Webarchiv für http://androiddrawables.com/Menu.html

Beispielsweise :

android:background="@android:drawable/ic_menu_close_clear_cancel"

  • FWIW, die verlinkte Domain ist tot und wurde von einer Domain besetzt. Dies ist die letzte Aktualisierung dessen, wie es aussah, und zeigt 4.1-7.1. Sehr schön 🙂 web.archive.org/web/20171127224252/http://…

    – i336_

    6. Oktober 21 um 17:38 Uhr


.

759290cookie-checkWie erstelle ich EditText mit der Schaltfläche cross(x) am Ende?

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

Privacy policy