用户界面-如何使用android标准主题的颜色



我想创建自定义控件,并根据当前主题对它们进行样式化。如何访问标准系统主题中的颜色和绘图?

如果你指的是从主题中动态检索colorPrimary或colorPrimaryDark等颜色,那么假设你的主题看起来像

 <style name="AppTheme.OrangeTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/orange</item>
    <item name="colorPrimaryDark">@color/orangeDark</item>
    <item name="colorAccent">@color/orangeAccent</item>
</style>

您可以使用此方法从styledAttributes访问primaryColor

public static int getPrimaryColorFromSelectedTheme(Context context) {
    int[] attrs = {R.attr.colorPrimary, R.attr.colorPrimaryDark};
    TypedArray ta = context.getTheme().obtainStyledAttributes(attrs);
    int primaryColor = ta.getColor(0, Color.BLACK); //1 index for primaryColorDark
    //default value for primaryColor is set to black if primaryColor not found
    ta.recycle();
    return primaryColor;
}

同样,您也可以通过将colorAccent添加到属性中来访问它。

关于drawables,我不太明白你所说的访问标准系统主题中的drawable是什么意思。但你可以使用访问Android绘图设备

ContextCompat.getDrawable(context, android.R.drawable.[Drawable Name]); 

相关内容

  • 没有找到相关文章

最新更新