2016-12-06 59 views
0

我很初學java,請幫忙。我有一個Android應用程序源代碼。我默認ImageView的是這樣的:Android:如何從字符串設置ImageView src?

<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

我有個問題。爲什麼? – Blackbelt

+0

您無法將imageview src更改爲字符串src。 Imageview src不過是圖像文件。 – Shriram

+0

android:src =「@ drawable/flag_icon」是一個整數值,並且您正在調用一個字符串值,問題是爲什麼? –

回答

3

我認爲你的方法是一個壞主意。

您也可以本地化drawable。我認爲在本地化你的應用時,這是改變圖像的更好方法。

0

在ImageVeiw,我可以改變:

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

不,你不能。什麼@drawable/flag_icon意味着可繪製的flag_icon位於drawable文件夾中。除非你有一個名稱爲 string的文件夾,該路徑無效

0

就本地化而言,只有一些特定的res文件夾可以本地化。有關它的更多信息here

對於drawable,你應該使用類似drawable-[language code]-r[capitalized localization code]的東西。

而且,由於數據值不匹配,您的方法將無法工作(請參閱不工作)。 @drawable返回int