Wie kann ich in Android EditText
deutlich machen , wenn darauf geklickt wird?
ZB, wenn ich ein EditText
mit einigen Zeichen in habe, z. B. 'Enter Name'
wenn der Benutzer darauf klickt, verschwinden diese Zeichen.
android
android-edittext
Entropy1024
quelle
quelle
Antworten:
Ich bin nicht sicher, ob Sie danach sind, aber versuchen Sie dieses XML:
android:hint="Enter Name"
Dieser Text wird angezeigt, wenn das Eingabefeld leer, ausgewählt oder nicht ausgewählt ist.
Oder wenn Sie möchten, dass es genau so funktioniert, wie Sie es beschrieben haben, weisen Sie dem editText einen onClickListener zu und setzen Sie ihn mit setText () leer.
quelle
Suchen Sie ein ähnliches Verhalten wie das x, das auf der rechten Seite der Textfelder eines iPhones angezeigt wird und das den Text beim Tippen löscht? Dort heißt es clearButtonMode. So erstellen Sie dieselbe Funktionalität in einer Android EditText-Ansicht:
String value = "";//any text you are pre-filling in the EditText final EditText et = new EditText(this); et.setText(value); final Drawable x = getResources().getDrawable(R.drawable.presence_offline);//your x image, this one from standard android images looks pretty good actually x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight()); et.setCompoundDrawables(null, null, value.equals("") ? null : x, null); et.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (et.getCompoundDrawables()[2] == null) { return false; } if (event.getAction() != MotionEvent.ACTION_UP) { return false; } if (event.getX() > et.getWidth() - et.getPaddingRight() - x.getIntrinsicWidth()) { et.setText(""); et.setCompoundDrawables(null, null, null, null); } return false; } }); et.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { et.setCompoundDrawables(null, null, et.getText().toString().equals("") ? null : x, null); } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } });
quelle
v.playSoundEffect(SoundEffectConstants.CLICK)
den onTouchListener hinzugefügt , um akustisches Feedback zu erhalten, wenn der Text entfernt wird.Nach einem Klick auf eine Aktion führen Sie den folgenden Schritt aus
((EditText) findViewById(R.id.yoursXmlId)).setText("");
oder
Schreiben Sie dies in eine XML-Datei
<EditText ---------- other stuffs ------ android:hint="Enter Name" />
Es funktioniert gut für mich. Hoffe euch allen.
quelle
das heißt hinweis in android benutze android: Hinweis = "Name eingeben"
quelle
Die Antwort von @ Harris ist großartig. Ich habe sie als separate Unterklasse von EditText implementiert. Dies kann die Verwendung vereinfachen, wenn Ihr Code bereits TextChangedListeners hinzufügt.
Außerdem habe ich es so angepasst, dass wenn Sie bereits zusammengesetzte Drawables verwenden, diese intakt bleiben.
Code ist hier für alle, die ihn brauchen:
package com.companyname.your import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; public class ClearableEditText extends EditText { public String defaultValue = ""; final Drawable imgX = getResources().getDrawable(android.R.drawable.presence_offline ); // X image public ClearableEditText(Context context) { super(context); init(); } public ClearableEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public ClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } void init() { // Set bounds of our X button imgX.setBounds(0, 0, imgX.getIntrinsicWidth(), imgX.getIntrinsicHeight()); // There may be initial text in the field, so we may need to display the button manageClearButton(); this.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { ClearableEditText et = ClearableEditText.this; // Is there an X showing? if (et.getCompoundDrawables()[2] == null) return false; // Only do this for up touches if (event.getAction() != MotionEvent.ACTION_UP) return false; // Is touch on our clear button? if (event.getX() > et.getWidth() - et.getPaddingRight() - imgX.getIntrinsicWidth()) { et.setText(""); ClearableEditText.this.removeClearButton(); } return false; } }); this.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { ClearableEditText.this.manageClearButton(); } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); } void manageClearButton() { if (this.getText().toString().equals("") ) removeClearButton(); else addClearButton(); } void addClearButton() { this.setCompoundDrawables(this.getCompoundDrawables()[0], this.getCompoundDrawables()[1], imgX, this.getCompoundDrawables()[3]); } void removeClearButton() { this.setCompoundDrawables(this.getCompoundDrawables()[0], this.getCompoundDrawables()[1], null, this.getCompoundDrawables()[3]); } }
quelle
Wenn Sie Text im Bearbeitungstext haben und ihn wie gesagt entfernen möchten, versuchen Sie Folgendes:
final EditText text_box = (EditText) findViewById(R.id.input_box); text_box.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus==true) { if (text_box.getText().toString().compareTo("Enter Text")==0) { text_box.setText(""); } } } });
quelle
Seien Sie vorsichtig, wenn Sie Text mit einem onClick-Listener in dem Feld festlegen, in dem Sie den Text festlegen. Ich habe dies getan und den Text auf eine leere Zeichenfolge gesetzt. Dies führte dazu, dass der Zeiger nach oben zeigte, wo sich mein Cursor befand, der normalerweise nach einigen Sekunden verschwindet. Wenn ich nicht darauf gewartet habe, dass es verschwindet, bevor ich meine Seite verlasse, wodurch finish () aufgerufen wird, würde dies einen Speicherverlust verursachen und meine App zum Absturz bringen. Ich habe eine Weile gebraucht, um herauszufinden, was den Absturz in diesem Fall verursacht hat.
Auf jeden Fall würde ich empfehlen, selectAll () in Ihrem On-Click-Listener anstelle von setText () zu verwenden, wenn Sie können. Auf diese Weise kann der Benutzer nach Auswahl des Textes mit der Eingabe beginnen und der gesamte vorherige Text wird gelöscht.
Bild des verdächtigen Zeigers: http://i.stack.imgur.com/juJnt.png
quelle
// Zum Löschen, wenn auf die Schaltfläche Löschen geklickt wird
clear = (Button) findViewById(R.id.clearsearchSubmit); clear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.getId() == R.id.clearsearchSubmit); firstName.setText(""); } });
Dies hilft dabei, die falschen Schlüsselwörter zu löschen, die Sie eingegeben haben. Anstatt immer wieder die Rücktaste zu drücken, können Sie einfach auf die Schaltfläche klicken, um alles zu löschen. Es hat bei mir funktioniert. Ich hoffe es hilft
quelle
Code zum Löschen des Textfelds beim Klicken
<EditText android:onClick="TextFieldClicked"/> public void TextFieldClicked(View view){ if(view.getId()==R.id.editText1); text.setText(""); }
quelle
((EditText) findViewById(R.id.User)).setText(""); ((EditText) findViewById(R.id.Password)).setText("");
quelle
Für mich der einfachste Weg ... Erstellen Sie einen öffentlichen EditText, zum Beispiel "myEditText1"
public EditText myEditText1;
Verbinden Sie es dann mit dem EditText, der gelöscht werden soll
myEditText1 = (EditText) findViewById(R.id.numberfield);
Erstellen Sie danach eine Leere, die auf einen Klick auf den EditText reagiert, und lassen Sie ihn beispielsweise den darin enthaltenen Text löschen, wenn er fokussiert ist
@OnClick(R.id.numberfield) void textGone(){ if (myEditText1.isFocused()){ myEditText1.setText(""); } }
Hoffe ich könnte dir helfen, wünsche allen einen schönen Tag
quelle