自定义视图的子视图在我设置其状态时不会更新

时间:2015-02-08 12:13:44

标签: android

我有一个自定义视图,其中包含各种子视图。如果我更改子视图的字体颜色,则更改不会显示在屏幕上。

模型如下:

[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"/>

0 个答案:

没有答案