Android在活动时通过Java改变EditText口音的颜色不活跃

时间:2016-11-01 20:50:35

标签: java android colors android-edittext diacritics

我一直在使用下面的代码,我从另一个问题中分成两行,以编程方式编辑颜色。

Changing tint color of Android EditText programmatically

((EditText) row1.getVirtualChildAt(i))

以下代码是我在上面一行之后用来改变颜色的代码。

.getBackground().mutate().setColorFilter(getResources().getColor(R.color.Green), PorterDuff.Mode.SRC_ATOP);

现在它设置下划线颜色,使其始终为绿色,无论是否正在使用EditText框。

如何设置它以便在我单击EditText框后再返回默认颜色。我也可以将另一种颜色指定为默认颜色,如浅灰色。

3 个答案:

答案 0 :(得分:0)

您可以使用OnFocusChangeListener.java注册编辑文本,并在焦点更改时更改颜色。

void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
// color while typing
}else{
// color when clicked away
}

}

答案 1 :(得分:0)

您可以为要添加到res / color / your_edittext_color_state.xml文件夹中的不同编辑文本状态创建颜色选择器xml。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#YOUR_COLOR"/>
    <item android:state_focused="true" android:color="#ANY_COLOR"/>
    <item android:color="#DEFAULT_COLOR"/>
</selector>

然后您可以在代码中设置foregroundTint

editText.setForegroundTintList(getApplicationContext()getResources()getColorStateList(R.color.your_edittext_color_state));

答案 2 :(得分:0)

我最后听到了这里给出的答案: How do I create ColorStateList programmatically?

我确实改变了一些事情,因为命令很重要,花了一点时间才意识到这一点。

将下面的代码块放在MainActivity的开头。

int[][] states = new int[][] {
        new int[] { android.R.attr.state_focused}, // enabled
        //new int[] {-android.R.attr.state_enabled}, // disabled
        //new int[] {-android.R.attr.state_checked}, // unchecked
        new int[] { android.R.attr.state_window_focused}  // pressed
};

int[] colors = new int[] {
        Color.GREEN,
        //Color.BLUE,
        //Color.YELLOW,
        Color.GRAY
};

ColorStateList myColorAccentList = new ColorStateList(states, colors);

然后将我的陈述放在我需要的for循环中。

((EditText) row1.getVirtualChildAt(i)).setBackgroundTintList(myColorAccentList);

对于其他任何人,您可能只想在编辑文本的末尾添加此部分。

.setBackgroundTintList(myColorAccentList);