how to get background color from current theme programmatically

前端 未结 3 1050
醉酒成梦
醉酒成梦 2020-12-02 17:02

I tried something like this, but i stuck:

TypedValue typedValue = new TypedValue(); 
if (this.parentActivity.getTheme().resolveAttribute(android.R.attr.windo         


        
相关标签:
3条回答
  • 2020-12-02 17:46

    for your qoustion the easiest way is:

    TypedValue typedValue = new TypedValue(); 
    if (this.parentActivity.getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true))
    {
      // how to get color?
      int colorWindowBackground = typedValue.data;// **just add this line to your code!!**
    }
    
    0 讨论(0)
  • 2020-12-02 17:54

    You can get the background color (or Drawable) from the current theme by:

    TypedValue a = new TypedValue();
    getTheme().resolveAttribute(android.R.attr.windowBackground, a, true);
    if (a.type >= TypedValue.TYPE_FIRST_COLOR_INT && a.type <= TypedValue.TYPE_LAST_COLOR_INT) {
        // windowBackground is a color
        int color = a.data;
    } else {
        // windowBackground is not a color, probably a drawable
        Drawable d = activity.getResources().getDrawable(a.resourceId);
    }
    
    0 讨论(0)
  • 2020-12-02 17:57

    You can get the resources of your Theme by using :

    TypedArray a = getTheme().obtainStyledAttributes(R.style.ThemeName, new int[] {R.attr.attribute_name});     
    int attributeResourceId = a.getResourceId(0, 0);
    
    0 讨论(0)
提交回复
热议问题