在value目录下创建arrays.xml文件 然后在arrays.xml文件中使用<string-array>或者<integer-array>标签定义数组:
<resources> <string-array name="languages"> <item>Java</item> <item>C</item> <item>Python</item> <item>C++</item> </string-array> <integer-array name="rank"> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </integer-array> <integer-array name="share_image"> <item>@mipmap/btn_friends_circle</item> <item>@mipmap/btn_weixin_friends</item> <item>@mipmap/btn_qq_friends</item> <item>@mipmap/btn_qq_zone</item> </integer-array> </resources>在java代码中引用
Resources res = getResources(); String[] languages = res.getStringArray(R.array.languages); int[] rank = res.getIntArray(R.array.rank); for(int i=0;i<languages.length;i++){ Log.d("语言排名",languages[i]+":"+rank[i]); } TypedArray typedArray = getResources().obtainTypedArray(R.array.share_image); int id = typedArray.getResourceId(2, 0); qqImageView.setImageResource(id);在xml中引用
<Spinner android:layout_width="match_parent" android:layout_height="50dp" android:entries="@array/languages"/>Tips:
其实 array 资源并不一定非要定义在 values/arrays.xml文件中,这只是一种不成文的约定,将上面的<string-array name="languages">定义在strings.xml中也是可以的
Android 系统对所有的 xml 资源文件其实是不加区别的,觉得 values 资源类型的不在于放在什么什么文件,而在于标签名,比如 string-array 的标签名决定了这是一个 array 资源
建议将数组资源统一放在 values/arrays.xml 中