我尝试过这样的事情,但我坚持:

TypedValue typedValue = new TypedValue();
if (this.parentActivity.getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true))
{
  // how to get color?
}

最佳答案

您可以通过以下方法从当前主题获取背景色(或Drawable):

TypedValue a = new TypedValue();
getTheme().resolveAttribute(android.R.attr.windowBackground, a, true);
if (a.isColorType()) {
    // windowBackground is a color
    int color = a.data;
} else {
    // windowBackground is not a color, probably a drawable
    Drawable d = activity.getResources().getDrawable(a.resourceId);
}
isColorType是在API级别29中引入的。在此之前,您可以改用以下代码:
if (a.type >= TypedValue.TYPE_FIRST_COLOR_INT && a.type <= TypedValue.TYPE_LAST_COLOR_INT)

关于android - 如何以编程方式从当前主题获取背景色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12375766/

10-09 13:44