Gibt es ein Widget, EditText
das eine Kreuzschaltfläche enthält, oder gibt es eine Eigenschaft, für EditText
die es automatisch erstellt wird? Ich möchte, dass die Kreuztaste den eingegebenen Text löscht EditText
.
android
android-edittext
Arun Badole
quelle
quelle
Antworten:
Verwenden Sie das folgende Layout:
Sie können auch die ID der Schaltfläche verwenden und die gewünschte Aktion für die onClickListener-Methode ausführen.
quelle
Wenn Sie zufällig DroidParts verwenden , habe ich gerade ClearableEditText hinzugefügt .
So sieht es mit einem benutzerdefinierten Hintergrund und einem klaren Symbol
abs__ic_clear_holo_light
aus ActionBarSherlock aus :quelle
EditText
. Thx @yanchenko2020-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/
Wenn Sie nicht auf AndroidX-Bibliotheken aktualisiert wurden, können Sie dies folgendermaßen hinzufügen:
Dann
Beachten Sie : app: endIconMode = "clear_text"
Wie hier beschrieben. Materialdesign-Dokumente
quelle
<androidx.appcompat.widget.AppCompatEditText/>
?Dies ist eine Kotlin-Lösung. Fügen Sie diese Hilfsmethode in eine Kotlin-Datei ein.
Und dann verwenden Sie es wie folgt in der
onCreate
Methode und Sie sollten gut zu gehen sein-Übrigens müssen Sie
R.drawable.ic_clear
zuerst das Symbol hinzufügen oder löschen. Dieser stammt von google- https://material.io/tools/icons/?icon=clear&style=baselinequelle
this.clearFocus()
vor der return true-Anweisung einfügen , können Sie dieses Ereignis im EditText-Aufrufer mit demonFocusChange
ListenersetCompoundDrawablesWithIntrinsicBounds(0, 0, clearIcon, 0)
. Sie können die links zeichnbare Symbol-ID als neuen Parameter an diese Funktion übergeben und in den Aufruf einfügen.Android Support-Bibliothek hat eine
SearchView
Klasse, die genau dies tut. (Nicht abgeleitet vonEditText
, muss also aSearchView.OnQueryTextListener
anstelle von a verwendenTextWatcher
)Verwenden Sie in XML wie folgt:
quelle
wo x ist:
quelle
Für
drawable resource
Sie können Standard-Android-Bilder verwenden:http://androiddrawables.com/Menu.html
Zum Beispiel :
quelle
Wenn Sie keine benutzerdefinierten Ansichten oder speziellen Layouts verwenden möchten, können Sie die Schaltfläche (X) mit 9 Patches erstellen.
Beispiel: http://postimg.org/image/tssjmt97p/ (Ich habe nicht genügend Punkte, um Bilder auf StackOverflow zu veröffentlichen.)
Der Schnittpunkt der rechten und unteren schwarzen Pixel repräsentiert den Inhaltsbereich. Alles außerhalb dieses Bereichs ist gepolstert. Um festzustellen, dass der Benutzer auf das x geklickt hat, können Sie einen OnTouchListener wie folgt einstellen:
Je nach Ihren Anforderungen kann diese Lösung in einigen Fällen besser funktionieren. Ich ziehe es vor, meine XML weniger kompliziert zu halten. Dies ist auch hilfreich, wenn Sie links ein Symbol haben möchten, da Sie es einfach in den 9-Patch aufnehmen können.
quelle
Ich habe den UI-Teil wie folgt gemacht:
edittext_bg.xml
balloon_overlay_close.png
Cross / Clear-Taste ein- / ausblenden:
Behandeln Sie Suchanfragen (dh wenn der Benutzer auf die Suche über die Softkey-Tafel klickt)
Clear / Cross-Taste
quelle
Verwenden
quelle
Hier ist die vollständige Bibliothek mit dem Widget: https://github.com/opprime/EditTextField
Um es zu verwenden, sollten Sie die Abhängigkeit hinzufügen:
In der Datei layout.xml können Sie mit den Widget-Einstellungen spielen:
app: clearButtonMode , can hat solche Werte: niemals immer während der Bearbeitung, außer bei der Bearbeitung
App: clearButtonDrawable
Beispiel in Aktion:
quelle
Setzen Sie einfach ein enges Kreuz wie
drawableEnd
in IhremEditText
:und verwenden Sie die Erweiterung , um mit dem Klicken umzugehen (oder verwenden Sie sie
OnTouchListener
direkt auf IhremEditText
):Verwendung der Erweiterung:
quelle
Sie können dieses Snippet mit Jaydip-Antwort für mehr als eine Schaltfläche verwenden. Rufen Sie es einfach auf, nachdem Sie einen Verweis auf die ET- und Button-Elemente erhalten haben. Ich habe die vecotr-Schaltfläche verwendet, daher müssen Sie das Button-Element in ImageButton ändern:
quelle
Wenn Sie sich im Rahmenlayout befinden oder ein Rahmenlayout erstellen können, habe ich einen anderen Ansatz ausprobiert.
Dies ist ein Bearbeitungstext, bei dem ich ein Kreuzsymbol als rechts zeichnbares Zeichen und dann eine transparente Schaltfläche zum Löschen von Text eingefügt habe.
quelle
quelle