2012-08-28 30 views
2

我在佈局和layout-xlarge文件夾中有main.xml。在Galaxy Note等更寬屏幕的手機中,我想使用layout-xlarge文件夾中的main.xml。我該如何重定向android系統以根據條件從代碼中動態使用特定的佈局文件?我們如何強制Android系統從特定的佈局文件夾中取得特定的佈局

例如:如果某些條件爲真,則使用佈局文件夾中的main.xml文件,如果爲false,則使用layout-xlarge文件夾中的main.xml。

+0

是否使用2頁main.xml中的文件,一個每個文件夾中? – Amt87

+0

是Amt87。一個在佈局中,另一個在layout-xlarge中,兩者都有不同的設計。 –

+0

基於什麼條件? – kcoppock

回答

2

你不能做任何你怎麼不想重定向Android系統,如果你正在使用XHDPI設備將採取從佈局xhdpi ..說例如三星S3它將需要佈局爲layout-xhdpi ..它總是取決於設備密度。

說,如果DPI是120DPI - 佈局LDPI

DPI是160dpi - 佈局MDPI

DPI是240 & 256dpi - 佈局HDPI

DPI是> 256dpi - 佈局xhdpi

以上給出的值都近似。

+0

它不僅取決於密度,在下面發佈的Teovald鏈接處還有很多資源限定符(密度除外)。屏幕尺寸,最小寬度,最長寬度,甚至語言。 – kcoppock

1

快速的解決方案:

  1. 重複main.xml中並將其命名爲類似main_phone_large.xml

  2. 然後在您的主要活動。

    //whatever width you decide for 
    if(getResources().getDisplayMetrics().widthPixels > 500){ 
    setContentView(R.layout.main_phone_large.xml); 
    }else 
    setContentView(R.layout.main.xml); 
    
+0

我同意這是一個選項,但在我的情況下,我有許多佈局文件具有相同的情況,因此使用新名稱創建副本似乎不是一個好的選擇,並且如果是這種情況,使用smallestWidth佈局文件夾(layout-sw),如http://developer.android.com/guide/topics/resources/providing-resources.html中所述。所以請給我一個方法來動態地覆蓋由android系統選擇的佈局。 –

1

您不需要做任何事情,只要您爲不同的密度提供不同的佈局,系統就會自動選擇適合設備屏幕的佈局。 您也不必爲所有密度提供佈局。如果某些元素不需要不同的佈局,只需在佈局文件夾中創建一個xml,並將其用於所有屏幕密度。

我強烈建議您閱讀此頁的正式文件:http://developer.android.com/guide/practices/screens_support.html

+0

感謝您的回答,我已經閱讀了作爲上述回答評論發佈的那篇文章。我需要的是如何根據我的條件從代碼中動態地重定向android系統。 –

+0

請提供您想要的條件示例 – Amt87

+0

除非您必須處理特定的硬件功能,否則您不需要更改代碼來管理不同的屏幕密度,該框架本身就已經做到了這一點。除非例如您需要爲特定手機使用其他佈局(例如,具有2個屏幕的京瓷回聲),否則不應該重寫框架所做的選擇。 – Teovald