Vol*_*yrH -1 android android-edittext android-selector
我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>
Run Code Online (Sandbox Code Playgroud)
我认为关键在于此选择器。我的EditText更改颜色,但始终为黄色。仅当输入一些文字时,如何使其变成黄色?我无法进行任何代码更改!这很重要。我不能仅添加或更改xml文件。
编辑:这是不可能只从xml,所以进行代码更改。
试试这个用途 addTextChangedListener
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) {
if (!editText.getText().toString().trim().isEmpty()) {
editText.setBackgroundColor(ContextCompat.getColor(Main2Activity.this, R.color.colorPrimary));
} else {
editText.setBackgroundColor(ContextCompat.getColor(Main2Activity.this, R.color.colorPrimaryDark));
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
Run Code Online (Sandbox Code Playgroud)