2012-12-21 151 views
0

我有了這樣的屏幕(在10" 平板電腦)的應用程序:Android的 - 平板電腦到手機屏幕大小

enter image description here

現在我需要修改應用也是一個手機上運行。由於屏幕會更小,我想採用「分割視圖」用戶界面並對其進行更改,以便單獨顯示左側列表視圖,然後在選擇一行後顯示適當的右側列表視圖。

我該如何在應用程序中處理這個問題,因爲一個活動目前同時處理兩個列表視圖,而且我猜這個手機每個列表視圖都需要兩個。

如何檢測要執行的操作?

謝謝

回答

1

請參閱Supporting Different Screen Sizes

通常這是使用片段完成的,但基本思想是相同的,無論您是否使用片段。根據屏幕大小,爲您的活動創建兩種不同的佈局。

  • res/layout/activity_main.xml
  • 保存雙窗格平板電腦佈局保存的默認佈局單窗格的手機在res/layout/activity_main_twopane.xml

然後使用佈局別名文件與鏈接描述的屏幕尺寸限定符以確定何時應該使用平板電腦佈局。例如,要顯示在large屏幕和與最寬的方向上至少爲600 dp的屏幕雙窗格佈局(包括大屏手機,如銀河S3),你可以這樣做:

  • res/values-large/layout.xml包含:

    <resources> 
        <item name="activity_main" type="layout">@layout/activity_main_twopane</item> 
        <bool name="twopane">true</bool> 
    </resources> 
    
  • res/values-sw600dp/layout.xml包含:

    <resources> 
        <item name="activity_main" type="layout">@layout/activity_main_twopane</item> 
        <bool name="twopane">true</bool> 
    </resources> 
    
當您的活動加載佈局

Android系統將加載適當的佈局文件(無論是res/layout/activity_main.xmlres/layout/activity_main_twopane.xml)的護理:

setContentView(R.layout.activity_main); 

請記住,沒有在單窗格佈局存在的意見當您嘗試訪問它們時將爲空(例如,不會再有兩個ListView)。檢查某個視圖是否存在是檢測您正在使用哪種佈局的一種方法。

還要注意使用可選的Boolean resources in XML files。這是一種方便的方式,將「是大屏幕還是小屏幕」變量傳遞給Java代碼。您可以訪問布爾資源在你的活動是這樣的:

boolean isTwoPane = getResources().getBoolean(R.bool.twopane); 
1

你應該看看MasterDetailedFlow導航模板。 Eclipse:NewProject> check create Activity>選擇「MasterDetailedFlow」Navigatoin類型。看看Android上的Data Binding

+1

另見http://developer.android.com/training/basics/fragments/fragment-ui.html和http://developer.android.com /training/multiscreen/adaptui.h​​tml – CommonsWare

相關問題