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
.
Wie erstelle ich EditText mit der Schaltfläche cross(x) am Ende?
Arun Badole
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
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
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:
-
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
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
)
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" />
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:
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
.
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