以编程方式将视图的颜色设置为 ?android:attr 颜色属性

Programmatically set a view's color to ?android:attr color attributes

我需要以编程方式将视图的颜色设置为 ?android:attr/textColorPrimary,这是 android 深色主题兼容属性中的一个属性。现在可以使用

获得 colorButtonNormal
R.attr.colorButtonNormal

但不是 ?android:attr/textColorPrimary 和 ?android:attr/colorBackground。无论如何也可以通过编程方式获取这些属性?

您可以使用 android.R.attr.textColorPrimary.

类似于:

    val typedValue = TypedValue();
    theme.resolveAttribute(android.R.attr.textColorPrimary, typedValue, true);
    val color = ContextCompat.getColor(this, typedValue.resourceId)

在Java中:

TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(android.R.attr.colorSecondary, typedValue, true);
int color = ContextCompat.getColor(this, typedValue.resourceId);