setBackground android ImageButton 函数如果没有被调用两次则不会更新颜色

setBackground android ImageButton function doesn't update color if it's not called twice

我的 Android 平板电脑有两个配置文件。一种是管理员配置文件,另一种是受限访客配置文件。我正在开发的代码必须从侦听器更改 Android ImageButton 的颜色。更新ImageButton颜色的函数调用如下:

private static void udate_color() {
    UIHandler.post(new Runnable() {
        @Override
        public void run() {
            ImageButton image_button = (ImageButton) findViewById(R.id.messageButton);
            image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
    });
}

如果平板电脑在管理员配置文件中,颜色会毫无问题地更新。如果平板电脑处于受限访客配置文件中,则上述代码不起作用;仅当函数 setBackground color 被调用两次时才会更新颜色。如果该函数仅被调用一次,则颜色不会更新。这意味着对于有限的访客配置文件,与前面示例相同的代码如下:

private static void udate_color() {
    UIHandler.post(new Runnable() {
        @Override
        public void run() {
            ImageButton image_button = (ImageButton) findViewById(R.id.messageButton);
            image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
            image_button.setBackground(res.getDrawable(R.drawable.green_border_grey_curved));
    });
}

我没有发现 ImageButton 重绘和 android 用户配置文件有任何问题。有谁知道解决这个问题的正确方法是什么以及为什么会这样?

我找到了解决方法,问题出在 xml 布局文件上;在这个文件中,我定义了一个初始颜色值。从 xml 文件中删除这部分并以编程方式设置颜色已解决问题。