从android中的字符串数组引用drawable

lea*_*ner 8 arrays android android-resources android-drawable

我如何从字符串xml文件中引用可绘制资源?我想要做

<string-array name="my_array">
<item>@drawable/my_image</item>
...
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

tri*_*out 15

对于drawables id数组,不要使用字符串数组 <array>

然后使用它们,得到一个TypedArray如果ids

TypedArray images = getResources().obtainTypedArray(R.array.my_image_ids);
int resourceId = images.getResourceId(id, -1);
Run Code Online (Sandbox Code Playgroud)

并且不要忘记当你完成资源id和数组以回收它时

images.recycle();
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用 0 作为默认值而不是 -1。0 永远不会被返回,因为它被保留以指定丢失(空)资源,而 -1 是有效的 id 值。尽管构建不会自动分配 -1,但它仍然被视为有效的 id,并且在以编程方式分配 id 时(例如,在包装适配器中)通常使用此类值,以避免与所指定的整数范围发生冲突。可以在构建期间自动分配。 (2认同)

小智 5

我猜你试图将所有图像资源名称(作为字符串)存储在数组中,并在编写java代码时调用它们?

Resources res = getResources();
String[] images = res.getStringArray(R.array.my_array);
Run Code Online (Sandbox Code Playgroud)

将您的字符串数组放入数组中.您可以像往常一样通过访问数组来获取所需的项目.

String image_name = images[0];
Run Code Online (Sandbox Code Playgroud)

http://developer.android.com/guide/topics/resources/string-resource.html

如果您尝试将图像列表加载到gridview,您可能需要参考:

http://developer.android.com/guide/topics/ui/layout/gridview.html

他们已将数组放在基本适配器中,如下所示:

private Integer[] mThumbIds = {
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7
};
Run Code Online (Sandbox Code Playgroud)

您可以轻松使用它,就像访问数组一样.