Android 如何在输入文本时更改EditText背景色?

Android 如何在输入文本时更改EditText背景色?,android,android-edittext,android-selector,Android,Android Edittext,Android Selector,我的EditText有一些颜色,但当我输入一些文本时,它应该会改变。说它是灰色的,我开始进入,它是黄色的。这个EditText也是聚焦的,所以当这个活动开始时——我已经可以输入文本了。我是如何尝试的: <style name="LoginEnterField"> <item name="android:textColorHint">@color/black</item> <item name="android:textColor">

我的
EditText
有一些颜色,但当我输入一些文本时,它应该会改变。说它是灰色的,我开始进入,它是黄色的。这个
EditText
也是聚焦的,所以当这个活动开始时——我已经可以输入文本了。我是如何尝试的:

<style name="LoginEnterField">
    <item name="android:textColorHint">@color/black</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:background">@drawable/selector_edittext</item>
    <item name="android:textSize">@dimen/general_text_size</item>
    <item name="android:paddingLeft">@dimen/activity_inner_horizontal_margin</item>
    <item name="android:paddingRight">@dimen/activity_inner_horizontal_margin</item>
</style>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">
    <solid android:color="@color/grey"/>
    <corners android:radius="5dp" />

</shape>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

  android:shape="rectangle">
  <solid android:color="@color/yellow"/>
  <corners android:radius="5dp" />

</shape>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="true" android:drawable="@drawable/roundbox_active_style"/>
  <item android:drawable="@drawable/roundbox_inactive_style" />
</selector>

@颜色/黑色
@颜色/黑色
@可绘制/选择器\编辑文本
@尺寸/一般文字尺寸
@尺寸/活动\内部\水平\边缘
@尺寸/活动\内部\水平\边缘
我认为关键在于这个选择器。我的编辑文本会改变颜色,但总是黄色。如何使它变成黄色,只有当我输入一些文字我无法更改任何代码!这很重要。我无法仅添加或更改xml文件。

编辑:不可能仅从xml进行编辑,因此请更改代码。

使用

将类型的对象附加到可编辑对象时,文本更改时将调用其方法

onTextChanged
(字符序列,int开始,int之前,int计数)- 调用此方法是为了通知您,在s内,计数 从开头开始的字符刚刚替换了已删除的旧文本 之前的长度


尝试使用addTextChangedListener

将TextWatcher添加到每当此editText的文本更改时调用其方法的人的列表中


使用TextWatcher

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });
您可以在任何适合您的方法中添加所需的代码。如需进一步参考,请访问:


使用添加文本更改列表

 public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (!editText.getText().toString().trim().isEmpty()) {
                    editText.setBackgroundColor(Your New Color);
                } else {
                    editText.setBackgroundColor(Your Old Color);
                }
            }

仅从xml是不可能做到的。无论如何,您需要对代码进行更改

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });
 public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (!editText.getText().toString().trim().isEmpty()) {
                    editText.setBackgroundColor(Your New Color);
                } else {
                    editText.setBackgroundColor(Your Old Color);
                }
            }