Как изменить фон и цвет шрифта Android EditText в Android во время редактирования? - PullRequest
3 голосов
/ 05 марта 2012

У меня есть EditText, отображающий пользовательскую текстовую метку. Отображается в виде синего фона с белыми буквами.

Но когда человек нажимает на него, я хочу, чтобы он изменился на белый фон с черными буквами, чтобы указать, что он находится в режиме редактирования.

Затем, когда человек щелкает, я хочу, чтобы он снова стал белым на синем, как и раньше. Кроме того, если введенный текст был шире, чем дисплей, я бы хотел, чтобы он выровнялся по левому краю.

Как мне все это сделать?

Ответы [ 3 ]

6 голосов
/ 05 марта 2012

пожалуйста, попробуйте это:

    edittext.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                v.setBackgroundColor(Color.WHITE);
                ((EditText) v).setTextColor(Color.BLACK);
            } else {

                v.setBackgroundColor(Color.BLUE);
                ((EditText) v).setTextColor(Color.WHITE);
            }

        }
    });
2 голосов
/ 05 марта 2012

Вы можете попробовать с textWatcher, как показано ниже

 EditText text=new EditText(this);
 text.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    //change the color before editing

}

@Override
public void afterTextChanged(Editable s) {
    //change the color after edited
}
});

Я думаю, что это может помочь вам ..

2 голосов
/ 05 марта 2012

Существуют различные способы достижения этого. как вы можете сделать это с помощью textwatcher

public void afterTextChanged(Editable s) {}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) 
{
 // do some operation on text of text1 field
 // do some operation on text of text2 field 
}

Я не уверен, что вы можете добиться этого в макете. попробуйте использовать селектор в макете. может быть, это может работать. для цвета текста используйте отдельный селектор, а для фона редактирования текста - другой селектор. Формат селектора будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:color="" /> <!-- pressed -->
     <item android:state_focused="true"
           android:color="" /> <!-- focused -->
     <item android:color="" /> <!-- default -->
 </selector>

заполнить желаемый цвет в атрибуте цвета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...