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