我在佈局和layout-xlarge文件夾中有main.xml。在Galaxy Note等更寬屏幕的手機中,我想使用layout-xlarge文件夾中的main.xml。我該如何重定向android系統以根據條件從代碼中動態使用特定的佈局文件?我們如何強制Android系統從特定的佈局文件夾中取得特定的佈局
例如:如果某些條件爲真,則使用佈局文件夾中的main.xml文件,如果爲false,則使用layout-xlarge文件夾中的main.xml。
我在佈局和layout-xlarge文件夾中有main.xml。在Galaxy Note等更寬屏幕的手機中,我想使用layout-xlarge文件夾中的main.xml。我該如何重定向android系統以根據條件從代碼中動態使用特定的佈局文件?我們如何強制Android系統從特定的佈局文件夾中取得特定的佈局
例如:如果某些條件爲真,則使用佈局文件夾中的main.xml文件,如果爲false,則使用layout-xlarge文件夾中的main.xml。
你不能做任何你怎麼不想重定向Android系統,如果你正在使用XHDPI設備將採取從佈局xhdpi ..說例如三星S3它將需要佈局爲layout-xhdpi ..它總是取決於設備密度。
說,如果DPI是120DPI - 佈局LDPI
DPI是160dpi - 佈局MDPI
DPI是240 & 256dpi - 佈局HDPI
DPI是> 256dpi - 佈局xhdpi
以上給出的值都近似。
它不僅取決於密度,在下面發佈的Teovald鏈接處還有很多資源限定符(密度除外)。屏幕尺寸,最小寬度,最長寬度,甚至語言。 – kcoppock
快速的解決方案:
重複main.xml中並將其命名爲類似main_phone_large.xml
然後在您的主要活動。
//whatever width you decide for
if(getResources().getDisplayMetrics().widthPixels > 500){
setContentView(R.layout.main_phone_large.xml);
}else
setContentView(R.layout.main.xml);
我同意這是一個選項,但在我的情況下,我有許多佈局文件具有相同的情況,因此使用新名稱創建副本似乎不是一個好的選擇,並且如果是這種情況,使用smallestWidth佈局文件夾(layout-sw),如http://developer.android.com/guide/topics/resources/providing-resources.html中所述。所以請給我一個方法來動態地覆蓋由android系統選擇的佈局。 –
您不需要做任何事情,只要您爲不同的密度提供不同的佈局,系統就會自動選擇適合設備屏幕的佈局。 您也不必爲所有密度提供佈局。如果某些元素不需要不同的佈局,只需在佈局文件夾中創建一個xml,並將其用於所有屏幕密度。
我強烈建議您閱讀此頁的正式文件:http://developer.android.com/guide/practices/screens_support.html
是否使用2頁main.xml中的文件,一個每個文件夾中? – Amt87
是Amt87。一個在佈局中,另一個在layout-xlarge中,兩者都有不同的設計。 –
基於什麼條件? – kcoppock