W systemie Android, w jaki sposób można wyczyścić EditText
po kliknięciu?Jak wyczyścić EditText przy kliknięciu?
Np. Jeśli mam EditText
z niektórymi znakami, na przykład 'Enter Name'
, po kliknięciu przez użytkownika znaki te znikają.
W systemie Android, w jaki sposób można wyczyścić EditText
po kliknięciu?Jak wyczyścić EditText przy kliknięciu?
Np. Jeśli mam EditText
z niektórymi znakami, na przykład 'Enter Name'
, po kliknięciu przez użytkownika znaki te znikają.
Nie jestem pewien, czy jesteś po to, ale spróbuj tego XML:
android:hint="Enter Name"
wyświetla ten tekst, gdy pole wejściowe jest pusta, wybrana lub odznaczone.
Lub jeśli chcesz, aby zrobił dokładnie tak, jak opisałeś, przypisz onClickListener w editText i ustaw go jako pustego za pomocą setText().
Jeśli chcesz mieć tekst w tekście edytować i usuwać je jak mówisz, spróbuj:
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("");
}
}
}
});
Dobra odpowiedź! BTW, możesz po prostu powiedzieć, czy (hasFocus) zamiast powiedzieć, czy (hasFocus == true) :) – rizalp1
Szukasz zachowania podobnego do X, który pojawia się na prawej stronie pól tekstowych iPhone, który czyści tekst po stuknięciu? Nazywa się tam clearButtonMode. Oto, jak utworzyć tę samą funkcjonalność w widoku Android EditText:
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) {
}
});
I dla mojej wersji tego kodu, który implementuje wszystkie różne opcje clearfield pola tekstowego, spójrz tutaj http://stackoverflow.com/questions/6274021/implement-uitextfield-properties-in-android/6274228 # 6274228 – Harris
To jest absolutnie wspaniałe. Jeśli, tak jak ja, używasz już złożonego losowania (glifu wyszukiwania po lewej stronie tekstu edycji), wymagana jest niewielka edycja do obsługi. Zamieściłem wersję tego jako podklasę EditText, poniżej. –
Sprawdź również: http://stackoverflow.com/questions/6355096 – yanchenko
@ odpowiedź Harrisa jest wielki, I zostały wdrożone go jako odrębnej podklasy EditText, co może sprawić, że łatwiejsze w użyciu, jeśli już kod dodaje TextChangedListeners.
Udoskonaliłem również to, że jeśli już używasz dowolnych złożonych fiszek, pozostawia je w stanie nienaruszonym.
Code jest tutaj dla każdego, kto go potrzebuje:
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]);
}
}
W OnTouchListener.onTouch() powinieneś zwrócić "true" po wyczyszczeniu pola. Oznacza to, że użytkownik wykorzystał zdarzenie zgodnie ze specyfikacją OnTouchListener. – northernman
co byłoby wtedy prawdą lub fałszem @ northernman –
podczas ustawiania tekstu za pomocą detektora onClick na polu ustawiasz tekst uważać. Robiłem to i ustawiałem tekst na pusty ciąg. To powodowało, że wskaźnik wskazywał gdzie był mój kursor, który zwykle zniknie po kilku sekundach. Kiedy nie zaczekałem, aż zniknie, zanim opuścisz moją stronę powodując wywołanie funkcji finish(), spowoduje to wyciek pamięci i awarię mojej aplikacji. Zajęło mi trochę czasu, aby dowiedzieć się, co spowodowało awarię na tym ..
W każdym razie, polecam używanie selectAll() w odbiorniku kliknij, a nie setText(), jeśli możesz. W ten sposób, po wybraniu tekstu, użytkownik może zacząć pisać, a cały poprzedni tekst zostanie wyczyszczony.
pic podejrzanego wskaźnika: http://i.stack.imgur.com/juJnt.png
po onclick wszelkich działań zrobić poniżej kroku
((EditText) findViewById(R.id.yoursXmlId)).setText("");
lub
napisać to w pliku XML
<EditText
---------- other stuffs ------
android:hint="Enter Name" />
jego działa poprawnie dla mnie. Mam nadzieję, że wam wszystkim.
Najprostsza i dokładniejsza odpowiedź. Dzięki! –
najprostszy sposób wyczyszczenia pola editext onclick. –
// Aby wyczyścić Po kliknięciu przycisku Wyczyść
firstName = (EditText) findViewById (R.id.Imię);
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("");
}
});
Pomoże to usunąć błędne słowa kluczowe, które zostały wpisane w tak zamiast ponowne naciśnięcie klawisza backspace i ponownie można po prostu kliknąć przycisk, aby usunąć everything.It pracował dla mnie. Nadzieja Pomaga
Proste działa. Dzięki – STS
że nazywa się wskazówka w android użytku android: hint = "Wprowadź nazwę"
To jest odpowiednia/prawidłowa odpowiedź. – Hanny
kod na oczyszczenie pola tekstowego po kliknięciu
<EditText android:onClick="TextFieldClicked"/>
public void TextFieldClicked(View view){
if(view.getId()==R.id.editText1);
text.setText("");
}
((EditText) findViewById(R.id.User)).setText("");
((EditText) findViewById(R.id.Password)).setText("");
dla mnie Najłatwiejszy sposób ... Utwórz publiczny EditText, na przykład "myEditText1"
public EditText myEditText1;
Następnie połącz go z EditText który powinien dostać rozjaśniająca
myEditText1 = (EditText) findViewById(R.id.numberfield);
Po tym, stworzyć pustkę, która reaguje na kliknięcia do EditText niech usunięcia tekstu wewnątrz niego, gdy jego skupiony, dla przykładu
@OnClick(R.id.numberfield)
void textGone(){
if (myEditText1.isFocused()){
myEditText1.setText("");
}
}
nadzieję, że mogłoby pomóc, Miłego dnia wszystkim
Krok 1: Dodaj detektor onClick do EditText Krok 2: W słuchacza, ustaw zawartość EditText na pusty ciąg Krok 3: Profit –
Ludzie , uratuj się som e czas i przeczytaj odpowiedź od Specur, która powinna być zaakceptowaną odpowiedzią tutaj http://stackoverflow.com/a/4175442/360211 – weston