設置wrap_content
告訴您的視圖大小本身到其內容所需的尺寸。在測試中,您的圖片爲1080x1920,您的設備的屏幕分辨率也可能爲1080x1920,因此非常合適。由於您將寬度和高度設置爲wrap_content
,因此Android僅嘗試使用盡可能多的屏幕空間,因爲它需要正確顯示提供的內容量。在這種情況下,由於可用屏幕空間與內容大小相匹配,因此它完全適合。
但是如果設備屏幕不是1080x1920呢?在這種情況下,Android將只使用盡可能多的空間,但仍會嘗試將圖像放在可用屏幕空間的範圍內。換句話說,系統會適當縮放圖像以將其放入您爲其提供的容器中。但是,如果長寬比與圖像不一致,這可能導致難以適應。例如,請參見下面這張截圖:
此圖片是1920×1080,但是請注意,它不太適合。這是因爲在風景中觀看時,這個nexus 7屏幕是1824x1200。此外,屏幕頂部的工具欄正在佔用可用的屏幕空間,使我的可視區域更小且更笨拙。所以雖然系統會喜歡這個圖像一直延伸到左邊界和右邊界,但它不能,因爲那意味着高度會比可視空間大。由於我使用wrap_content
來顯示此圖像,因此係統會盡可能多地使用垂直空間,結果是圖像不太適合水平空間。
因此,爲了更直接地解決您的問題,是wrap_content
是一個相對大小設置,可以更輕鬆地在多個屏幕尺寸上獲得一致的外觀,類似於使用dp
。但要意識到市場上有成百上千個可用的Android設備,並且它們都具有不同的屏幕尺寸和密度。所以你的繪圖可能不會總是以你想要的方式出現在每個設備上。
解決此問題的方法是提供資產的多個版本,併爲不同的屏幕尺寸和密度提供備用佈局文件。一旦你這樣做,你所能做的就是測試,測試和測試更多。使用模擬器來顯示奇怪的屏幕密度或您不擁有的設備,只是爲了確保您獲得想要的外觀。在你的1920x1080圖像的情況下,它在這個設備上看起來很棒,但它如何適合比圖像分辨率更小的大型平板電腦或小手機?這些都是您在設計中必須考慮的情況。
我建議你閱讀這些資源,因爲他們在學習如何應對來自不同的屏幕大小和密度而導致的問題非常有幫助:
http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html