2012-08-24 38 views
0

我正在开发一个Android项目,并试图检索窗口标题背景样式,然后提取背景颜色/ drawable(这样我就可以将它们应用于我的自定义标题栏布局) 。我已经能够使用该代码来获得一个TYPE_REFERENCE的样式:从TypedValue中提取背景颜色/可绘制

TypedValue a = new TypedValue(); 
      getTheme().resolveAttribute(android.R.attr.windowTitleBackgroundStyle, a, true); 
      if(a.type == TypedValue.TYPE_REFERENCE){ 
    // GOES IN HERE 
// Drawable d = getResources().getDrawable(a.resourceId); // THROWS A RESOURCES NOT FOUND EXCEPTION 
    } 

我来了空白(尽管很容易地2小时,谷歌试图法术)如何成功地找出哪些资源指出的是,并从那里到颜色/ Drawable。我假设它是一种在XML中定义的样式:我怎样才能以编程方式实际获取该样式的属性/属性/设置并获取为背景添加的颜色/ Drawable?

回答

5

啊,想通了:

TypedValue a = new TypedValue(); 
getTheme().resolveAttribute(android.R.attr.windowTitleBackgroundStyle, a, true); 
     if(a.type == TypedValue.TYPE_REFERENCE){ 
      TypedArray b = this.obtainStyledAttributes(a.resourceId, new int[]{ 
        android.R.attr.background 
      }); 
      b.getValue(0, a); 
         titleBar.setBackgroundResource(a.resourceid); 
      b.recycle(); 
     }