How to get a value of color attribute programmatically

前端 未结 3 2301
自闭症患者
自闭症患者 2021-02-20 05:01

When I use resolveAttribute() to find out a color value of ?attr/colorControlNormal, I got 236:

TypedValue typedValue = ne         


        
相关标签:
3条回答
  • 2021-02-20 05:27

    It's correct I think, check with it

    HEX

    Integer intColor = -1979711488138;
    String hexColor = "#" + Integer.toHexString(intColor).substring(2);
    

    or

    int color = getCurrentTextColor();
    int a = Color.alpha(color);
    int r = Color.red(color);
    int g = Color.green(color);
    int b = Color.blue(color);
    
    0 讨论(0)
  • 2021-02-20 05:29

    This works for me:

    TypedValue typedValue = new TypedValue();
    getTheme().resolveAttribute(R.attr.colorControlNormal, typedValue, true);
    int color = ContextCompat.getColor(this, typedValue.data)
    

    typedValue.data instead of typedValue.resourceId

    0 讨论(0)
  • 2021-02-20 05:31

    I believe instead of this:

    
        TypedValue typedValue = new TypedValue();
        getTheme().resolveAttribute(R.attr.colorControlNormal, typedValue, true);
        int color = typedValue.data;
    
    

    You should do this:

    
        TypedValue typedValue = new TypedValue();
        getTheme().resolveAttribute(R.attr.colorControlNormal, typedValue, true);
        int color = ContextCompat.getColor(this, typedValue.resourceId)
    
    
    0 讨论(0)
提交回复
热议问题