Подтвердить что ты не робот

Как очистить EditText при нажатии?

В Android, как я могу очистить EditText при нажатии?

Например, если у меня есть EditText с некоторыми символами, например 'Enter Name', когда пользователь нажимает на него, эти символы исчезают.

4b9b3361

Ответ 1

Я не уверен, если вы после этого, но попробуйте этот XML:

android:hint="Enter Name"

Он отображает этот текст, когда поле ввода пуст, выбрано или не выбрано.

Или, если вы хотите, чтобы это было точно так, как вы описали, назначьте onClickListener в editText и установите его пустым с помощью setText().

Ответ 2

Вы ищете поведение, подобное x, которое отображается в правой части текстовых полей на iphone, который очищает текст при нажатии? Там он называется clearButtonMode. Вот как создать ту же функциональность в представлении 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) {
    }
});

Ответ 3

после нажатия любого действия сделать ниже шаг

((EditText) findViewById(R.id.yoursXmlId)).setText("");

или

записать это в файл XML

<EditText
---------- other stuffs ------ 
android:hint="Enter Name" /> 

его работы прекрасны для меня. Надеюсь на всех вас.

Ответ 4

@Harris ответ велик, я реализовал его как отдельный подкласс EditText, который может упростить его использование, если ваш код уже добавляет TextChangedListeners.

Кроме того, я изменил его так, чтобы, если вы уже используете какие-либо Compound Drawables, он оставляет их неповрежденными.

Код здесь, для тех, кто в нем нуждается:

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]);
    }

}

Ответ 5

который называется hint in android использование android: hint = "Enter Name"

Ответ 6

Если вы хотите иметь текст в тексте редактирования и удалить его, как вы говорите, попробуйте:

    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("");
                }
            }
        }
    });

Ответ 7

Будьте внимательны при настройке текста с помощью прослушивателя onClick в поле, которое вы устанавливаете для текста. Я делал это и установил текст в пустую строку. Это заставило указатель подойти, чтобы указать, где находится мой курсор, который, как правило, уходит через несколько секунд. Когда я не дождался, когда он уйдет, прежде чем покинуть мою страницу, вызвавшую ее завершение(), это вызовет утечку памяти и разрушит мое приложение. Потратил меня на то, чтобы выяснить, что вызвало крах на этом.

В любом случае, я бы рекомендовал использовать selectAll() в вашем прослушивателе кликов вместо setText(), если вы можете. Таким образом, после выбора текста пользователь может начать вводить текст, и весь предыдущий текст будет очищен.

pic подозрительного указателя: http://i.stack.imgur.com/juJnt.png

Ответ 8

//Очистить При нажатии кнопки "Очистить"

firstName = (EditText) findViewById (R.id.firstName);

    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("");
        }
    });

Это поможет очистить неверные ключевые слова, которые вы набрали, вместо того, чтобы снова и снова нажимать назад, вы можете просто нажать кнопку, чтобы очистить все. Я работал у меня. Надеюсь, что это поможет

Ответ 9

Код для очистки текстового поля при нажатии

<EditText android:onClick="TextFieldClicked"/>

public void TextFieldClicked(View view){      
      if(view.getId()==R.id.editText1);
           text.setText("");    
}

Ответ 10

((EditText) findViewById(R.id.User)).setText("");
((EditText) findViewById(R.id.Password)).setText("");

Ответ 11

Для меня самый простой способ... Создайте общедоступный EditText, например, "myEditText1"

public EditText myEditText1;

Затем подключите его с помощью EditText, который должен быть очищен

myEditText1 = (EditText) findViewById(R.id.numberfield);

После этого создайте пустоту, которая реагирует на щелчок на EditText, и дайте ей очистить текст внутри него, когда его Фокусировка, например

@OnClick(R.id.numberfield)
        void textGone(){
            if (myEditText1.isFocused()){
                myEditText1.setText("");

        }
    }

Надеюсь, что смогу помочь вам, Приятного дня каждый