这里以获取 ?attr/actionBarSize和 ?attr/colorAccent的值为例:

        
        //需要获取的值的id:
        int[] ints = {android.R.attr.actionBarSize, android.R.attr.colorAccent};
        构建typedArray
        TypedArray typedArray = context.obtainStyledAttributes(ints);
        //第0个值(ints[0]的resId)
        float actionBarSize = typedArray.getDimension(0, 0);
        //同理,ints[1]的指标
        int colorAccent = typedArray.getColor(1, 0);
        typedArray.recycle();

这里的context必需是定义过theme,所以最好是直接使用activity或者dialog,比如这样写

fun attrColor(activity: Activity, id:Int) = activity.obtainStyledAttributes(intArrayOf(id)).let {
    val color = it.getColor(0,Color.TRANSPARENT)
    it.recycle()
    color
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐