【android】在xml文件中定义drawable数组、id数组等

假如我们需要在代码中为一组view设置相对应的一组图片资源时(如为listview/gridview的所有item设置一组对应的图片时),我们就可以在xml中定义一组代表图片的drawable数组,然后用代码进行读取。

开始我是这样做的:

<integer-array name="actions_images">
    <item>@drawable/pencil1</item>
    <item>@drawable/pencil2</item>
    <item>@drawable/pencil3</item>
    <item>@drawable/pencil4</item>
    <item>@drawable/pencil5</item>
    <item>@drawable/pencil6</item>
</integer-array>

然后在代码中试图调用getResources().getIntArray来获取图片的id,可发现根本行不通。最终查stackoverflow给出了解决办法:

1、在xml中要这样定义:

<string-array name="actions_images">
    <item>@drawable/pencil1</item>
    <item>@drawable/pencil2</item>
    <item>@drawable/pencil3</item>
    <item>@drawable/pencil4</item>
    <item>@drawable/pencil5</item>
    <item>@drawable/pencil6</item>
</string-array>

2、在java代码中这样来获取:

TypedArray ar = context.getResources().obtainTypedArray(R.array.actions_images);
int len = ar.length();
int[] resIds = new int[len];
for (int i = 0; i < len; i++)
    resIds[i] = ar.getResourceId(i, 0);

ar.recycle();  

图片的id就保存在resIds中去了,然后我们就可以引用它(比如用img.setImageResourse(resIds[0]))来设置图片了。

同理,要想在xml中定义id数组,做法一样。

参考:http://stackoverflow.com/questions/6945678/android-storing-r-drawable-ids-in-xml-array

时间: 2024-11-08 21:44:12

【android】在xml文件中定义drawable数组、id数组等的相关文章

Android -- 在xml文件中定义drawable数组

Xml <string-array name="images"> <item>@drawable/image1</item> <item>@drawable/image2</item> <item>@drawable/image3</item> <item>@drawable/image4</item> <item>@drawable/image5</item&

怎么在android的XML文件中添加注释

android的XML文件注释一般采用 <!--注释内容 -->的方式进行 在XML中,形如    <Button           />      的表示方式,其中"/>"的含义表示这个XML中没有内文,他是一个最小组成单元,也就是说他的中间不能包含其他任何< >的代码,所以在<Button />中间注释会出现错误 注意看到,在注释的前面有一个">"符号,这就是我们能够在他中间进行注释的原因,他的完整结

Android attrs.xml文件中属性类型format值的格式

"reference" //引用 "color" //颜色 "boolean" //布尔值 "dimension" //尺寸值 "float" //浮点值 "integer" //整型值 "string" //字符串 "fraction" //百分数,比如200% 枚举型的格式: < attr name="orientation&q

Android使用xml文件中的array资源

Android中有种使用数组的非常简单的用法,在xml文件中获取. 创建数组资源 在value目录下创建arrays.xml文件 然后在arrays.xml文件中使用<string-array>或者<integer-array>标签定义数组: <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="languages&

Eclipse 在Android的xml文件中使用Alt+/提示键失效

新安装的eclipse因为默认设置的问题容易出现这个问题. Window-Preferences-General-Keys 查看Word Completion绑定的快捷键是否是Alt+/,如果是将其改为别的,然后将Content Assist绑定的快捷键改为Alt+/即可.

Android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替

背景介绍 在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息.对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设置不同的字体风格以满足需求. 这里推荐的做法是使用android.text.*;和 android.text.style.*;下面的组件来实现RichText:也即在同一个TextView中设置不同的字体风格.对于某些应用,比如文本编辑,记事本,彩信,短信等地方,还必须使用这些组件才能达到

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

解决Android中fragment_main.xml文件中的组件获取的问题

package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.Me

android中在xml文件中使用View在某个控件的上方画一条线;android:listSelector的属性说明;android:visibility=&quot;gone&quot;

一.例如RelativeLayout中android:visibility="gone" 其有三个属性:visible显示:invisible显示黑背景条:gone不显示 在类中,可以设置其显示与否,setVisibility(View.GONE);不显示 setVisibility(View.VISIBLE);显示 二. android:listSelector的属性说明 <GridView android:id="@+id/gridview_numberkeyboa