2011-12-21 68 views
0

從Android 3.2開始我有這個奇怪的問題。確切屏幕尺寸的Android資源文件夾

這很容易重現:

  1. 創建一個空的項目;
  2. 將values-480x320 /資源目錄添加到它;
  3. 在此新文件夾中更改一些字符串,例如@ string/hello,與values /目錄中的缺省值不同。

現在,在3.1和更低版本的Android設備和仿真器上,一切都如您所期望的那樣。但在3.2及更高版本(包括4.x Galaxy Nexus和仿真器)上,使用值-480x320 /而不是值/文件夾!

值得一提的是,我沒有看到兼容性「Stretch/Zoom to fill screen」圖標。我嘗試在AndroidManifest.xml中更改supports-screens和uses-sdk標記,但它們不能解決這個問題。

所以我的問題是:爲什麼會發生這種情況,你有什麼建議來解決它?

PS,我真的沒有看到任何理由爲什麼從3.1到3.2的Android版本這樣一個小的變化必須打破舊應用程序!

在此先感謝!

+0

看看這裏,也許它會有所幫助:http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts – Jave 2011-12-21 09:21:51

+0

沒有人在Android中使用「* -480x320 /」資源? ? – myself 2011-12-21 15:10:11

回答

0

如果您有興趣:建議基本上不要使用基於固定分辨率的資源文件夾,如值-480x320。

0

我猜想3.2中有一些改變了this算法。嘗試創建具有限定符here的不同值文件夾。

+0

感謝您的支持! 如果我刪除舊樣式(例如values-480x320)文件夾並將其替換爲新樣式(例如values-sw320dp)文件夾,則問題將在新的3.2+平臺上修復。但與此同時,佈局將打破3.1和更低的Android,因爲他們根本不理解新的3.2樣式後綴...... – myself 2011-12-21 09:45:37

+0

如果你在res中有兩個文件夾 - 新舊後綴會發生什麼? – Jin35 2011-12-21 10:47:31

+0

通常,新式文件夾完全被忽略,如果有新文件夾,則替換爲480x320文件夾。但我嘗試了各種新舊風格的組合,並發現了一些有用的東西 - 對於WVGA800/240dpi仿真器,您可以聲明值-sw300dp,並且此文件夾將使得來自值-480x320的資源將被「忽略」 - 如果您不願意在values-sw300dp中不指定@ string/hello,將使用來自默認值/目錄的@ string/hello。這個修復非常混亂,所以我正在尋找更好的東西。 – myself 2011-12-21 12:45:16