以编程方式获取主题颜色

时间:2020-07-24 15:01:29

标签: android

我有一个使用SurfaceView绘制图形的应用程序。我希望表面视图的颜色(背景,轴等)与当前主题相匹配,所以我的想法是使用默认的窗口背景色作为背景,并使用默认的文本色作为轴。

使用this SO answer,如果我在Theme.AppCompat.Light.NoActionBarTheme.AppCompat.NoActionBar之间更改主题(或可能拥有将其用作父主题的主题),则可以很好地获取窗口背景正确更改。

但是,我尝试重复此操作以获取文本颜色,但它不起作用:

        a = new TypedValue();
        context.getTheme().resolveAttribute(android.R.attr.windowBackground, a, true);
        if (a.type >= TypedValue.TYPE_FIRST_COLOR_INT && a.type <= TypedValue.TYPE_LAST_COLOR_INT) {
            backgroundColor = a.data;
        } else {
            Log.d("Graph","Window color is not a color");
        }

        TypedValue a = new TypedValue();
        context.getTheme().resolveAttribute(android.R.attr.textColor, a, true);
        if (a.type >= TypedValue.TYPE_FIRST_COLOR_INT && a.type <= TypedValue.TYPE_LAST_COLOR_INT) {
            labelColor = a.data;
        } else {
            Log.d("Graph","Text color is not a color");
        }

我猜这是因为我使用了错误的属性,但我无法弄清楚正确的属性是什么-the docs中的textColor似乎合适,并且我尝试了一些其他类似的。这是正确的方法吗?并且有一种更容易的方法来了解哪些属性与主题中的属性相对应吗?

0 个答案:

没有答案
相关问题