我有一个自定义视图,其中包含各种子视图。如果我更改子视图的字体颜色,则更改不会显示在屏幕上。
模型如下:
[customview]
[button1 /] [button2 /] [button3 /] ...
[/customview]
将fontcolor黑色更改为fontcolor grey。无论我是否呼叫无效,都不起作用:
int numChildren = getChildCount();
if (numChildren > 0) {
for (int i = 0; i < numChildren; i++) {
if (getChildAt(i) instanceof Button) {
Button l = (Button) getChildAt(i);
l.setEnabled(false);
l.setTextColor(getResources().getColor(R.color.gray));
l.invalidate();
}
}
}
如何在视图中更改“拍摄”?到目前为止,唯一有效的方法是删除所有的子视图,然后用新的字体颜色费力地读取它们 - 但这非常慢且效率低。
编辑:我确保使用以下代码传播更改:
if (getChildAt(i) instanceof Button) {
Button l = (Button)getChildAt(i);
l.setEnabled(false);
Log.d("Log","State was " +String.valueOf(l.isEnabled()));
}
我收到日志消息,证明按钮的状态正在改变,但字体颜色不会改变。这是我用于按钮的颜色xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:color="@color/gray" />
<item android:state_enabled="true"
android:color="@color/black"/>