我是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]
我一直在寻找这个问题,但尚未找到,请帮忙。感谢。
答案 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中,并且基于设备语言,它将占用适当的资源。