Android如何根据xml文件来读取不同的drawable资源
阿神
阿神 2017-04-17 13:45:25
[Android讨论组]
阿神
阿神

闭关修行中......

全部回复(3)
高洛峰

我也遇到这样的问题:
在XML文件中声明资源ID数组

    <array name = "drawer_icon_normal">
        <item>@drawable/ic_drawer_home_normal</item>
        <item>@drawable/ic_drawer_follow_normal</item>
        <item>@drawable/ic_drawer_collect_normal</item>
        <item>@drawable/ic_drawer_register_normal</item>
        <item>@drawable/ic_drawer_explore_normal</item>
    </array>

然后要获取ID需要通过TypedArray来获取

    TypedArray array = context.getResources().obtainTypedArray(R.array.drawer_icon_normal);
    for (int i$ = 0; i$ < array.length(); i$++) {
        drawables_normal[i$] = array.getResourceId(i$, R.drawable.default_profile);
    }
    array.recycle();
大家讲道理

可以在values文件夹下建立一个ids.xml文件

xml<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="customDrawable" type="drawable">@drawable/bkg_item1</item>  
</resources>

然后ImageView的背景你设置为

xmlandroid:background="@drawable/customDrawable"

需要的时候你改变ids.xml中的配置就行

ringa_lee

好吧。。。我傻了。。。

要保存其资源ID其实非常简单,R.drawble.bkg_item1这样的形式是在java代码中这样使用的。而在xml文件中,如果想要表示一个drawable文件的资源ID,形式是@drawable/bkg_item1。

因此,我们可以通过如下的xml文件来存放资源ID

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="bazinga_bkgs">
        <item>@drawable/bkg_bazinga_1</item>
        <item>@drawable/bkg_bazinga_2</item>
        <item>@drawable/bkg_bazinga_3</item>
    </integer-array>
</resources>

然后在java代码中通过

int[] bkgIds = mContext.getResources().getIntArray(R.array.bazinga_bkgs);

来读取这些资源ID。
这样我们就可以对其进行我们所需要的操作了:imageView.setBackgroundResource(bkgIds[index])

通过实际测试发现,这样是不行的。。。读出来的资源ID都是0。到底该怎么做那???怎么在xml文件中声明资源ID啊???

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号