获取自定义主题(attr.xml)中的定义的图片(Drawable)

原创 2015年11月20日 09:55:53

  获取自定义主题(attr.xml)中的定义的图片(Drawable)

从事安卓开发一周学到了很多东西。一个刚刚从学校毕业的菜鸟想要变成编程达人注定不是一条容易的路。争取每天写下一点工作心得或者收获。


正文:

今天在开发中需要解决一个根据当前主题Theme而变换图片的需求。 想必大家都会如何从layout设置。如下

attrs.xml

<resources>
    <declare-styleable name="MyTheme">
        <attr name="homeyjzc" format="reference" />  //index=1
        <attr name="homessgj" format="reference" />  //index=1
    </declare-styleable>
</resources>


attrs.xml中定义了两个引用类型,其指向了Styles.xml定义的Theme。


Styles.xml

    <style name="Theme3" parent="AppTheme.NoActionBar">
        <item name="homessgj">@drawable/home_ssgj1</item>
        <item name="homeyjzc">@drawable/home_spjd1</item>
    </style>


重点来了:如何使用相应的图片呢?

分为两种情况:

1. layout中使用,这种情况相对简单。

android:background="?titlebg"
加上一个"?" 即可指向当前Theme中的图片


2. .java文件中使用则相对麻烦一点

TypedArray a = context.obtainStyledAttributes(R.styleable.MyTheme);
Drawable d = a.getDrawable(iconId); //icoid 指的是所需要的drwable在Mytheme的实际index
        // 回收
a.recycle();


错误方法:

Drawable d = a.getDrawable(R.attr.homeyjzc); //此处并不能指向homeyjzc代表的Drawable


完成

总结:期初作者没有使用styleable,而是将"reference"直接放入attr.xml文件中,在layout中使用完全没有问题,直接调用。但是java文件中总是报错,obtainStyledAttributes()方法只适用于读取styleable中定义的attribute。
不知道各位大神有没有其他能够获取自定义style中所指向的drawable?
版权声明:本文为博主原创文章,未经博主允许不得转载。

获取自定义主题(attr.xml)中的定义的图片(Drawable)

获取自定义主题(attr.xml)中的定义的图片(Drawable) 从事安卓开发一周学到了很多东西。一个刚刚从学校毕业的菜鸟想要变成编程达人注定不是一条容易的路。争取每天写下一点工作心得或者收货。 ...
  • github_24804695
  • github_24804695
  • 2015年11月20日 09:55
  • 1050

Android自定义属性,attr format取值类型

原文链接:http://blog.csdn.net/sunny2come/article/details/6996943
  • fanxl10
  • fanxl10
  • 2014年11月20日 16:58
  • 1575

Android自定义控件使用declare-styleable进行属性配置

1、在res/vlaues文件夹下创建资源文件attrs.xml ...
  • johnWcheung
  • johnWcheung
  • 2016年10月19日 21:22
  • 1611

Android 5.0以下XML定义的drawable不识别?attr/属性的解决思路

Android Android 5.0以下XML定义的drawable不识别?attr/属性的解决思路 (Resources$NotFoundException 错误)...
  • ifadai
  • ifadai
  • 2017年02月23日 22:18
  • 357

自定义Drawable实现圆形图片

  • 2015年10月02日 12:19
  • 5.96MB
  • 下载

Android drawable 玩转自定义图片以及bug的解决

  • 2014年08月03日 01:31
  • 1.9MB
  • 下载

Android 开发 Tip 2 -- 多主题下drawable.xml使用?attr的问题

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51820937多主题下引用attr的问题。 在5.0以下手机,如果drawable xm...
  • crazy1235
  • crazy1235
  • 2017年04月14日 16:31
  • 1279

Android中View自定义XML属性详解以及R.attr与R.styleable的区别

为View添加自定义XML属性Android中的各种Widget都提供了很多XML属性,我们可以利用这些XML属性在layout文件中为Widget的属性赋值。如下所示:...
  • sunqunsunqun
  • sunqunsunqun
  • 2016年03月02日 00:59
  • 18329

Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用! .

引用:http://blog.csdn.net/Android_Tutor/article/details/5508615 http://www.cnblogs.com/zwl12549/archi...
  • wtfpewfn
  • wtfpewfn
  • 2012年10月17日 10:21
  • 506

Android中View自定义XML属性详解以及R.attr与R.styleable的区别

地址:http://blog.csdn.net/iispring/article/details/50708044 为View添加自定义XML属性 Android中的各种Widge...
  • qq_15796477
  • qq_15796477
  • 2016年03月02日 11:19
  • 849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取自定义主题(attr.xml)中的定义的图片(Drawable)
举报原因:
原因补充:

(最多只允许输入30个字)