Android:如何从字符串设置ImageView src?

时间:2016-12-06 14:21:00

标签: android

我是java的初学者,请帮忙。我有一个Android应用程序源代码。我的默认imageView是这样的:

<ImageView
        android:id="@+id/flag_logo"
        android:layout_marginBottom="@dimen/global_keyline_s"
        android:scaleType="fitCenter"
        android:src="@drawable/flag_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:cropToPadding="false"
        android:adjustViewBounds="true" />

我需要在某个国家/地区翻译我的应用,我需要动态设置应用标题和标记图标。

我有字符串资源并已翻译过:

<resources>
    <string name="app_name">My App Name</string>
    <string name="flag_icon">@drawable/flag_icon</string>
    ...
</resources>

在ImageVeiw中,我可以更改:

android:src="@drawable/flag_icon"android:src="@string/flag_icon"

当我将这个脚本测试到模拟器时,没关系,但是当我尝试生成签名的apk时,我收到了错误:

Error:(4) Error: Unexpected resource reference type; expected value of type @string/ [ReferenceType]

我一直在寻找这个问题,但尚未找到,请帮忙。感谢。

4 个答案:

答案 0 :(得分:3)

我认为你的做法是个坏主意。

您也可以本地化一个drawable。我认为这是在本地化您的应用时更改图像的更好方法。

答案 1 :(得分:0)

在ImageVeiw中,我可以更改:

   android:src =“@ drawable / flag_icon”到android:src =“@ string / flag_icon”?

不,你不能。 @drawable/flag_icon的含义是drawable flag_icon位于drawable文件夹中。除非你有一个名字的文件夹 string,该路径无效

答案 2 :(得分:0)

就本地化而言,只能部署一些特定的res文件夹。有关它的更多信息here

对于drawable,你应该使用像drawable-[language code]-r[capitalized localization code]这样的东西。

而且,由于数据值不匹配,您的方法将无效(读取无法正常工作)。 @drawable会返回int

答案 3 :(得分:0)

就像@glethien建议的那样。我会使用本地化的drawable - https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

因此,您将图像放在drawable-hdpi和drawable-de-hdpi中,并且基于设备语言,它将占用适当的资源。