讀古今文學網 > Android程序設計:第2版 > Fragment佈局 >

Fragment佈局

創建了骨架式的Fragment子類後,我們可以使用Android可視化UI編輯器作為組成應用中所有屏幕顯示的工具。首先,使用可視化編輯器,把線框轉換成XML文件:main.xml,主活動會使用該文件。

使用可視化編輯器佈局Fragment

如圖11-5的屏幕截圖所示,從面板中拖曳兩個Fragment項到特定位置,並拖曳表示該Fragment的矩陣邊框來調整大小。

在佈局的XML視圖中有些參數被編輯更頻繁。在以下程序清單中,注意class參數是設置成該fragment的Fragment子類的全限定名。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="horizontal" >
        <fragment
            android:id="@+id/list_frag"
            android:name="com.finchframework.uiframework.QueryResultsListFragment"
            android:layout_
            android:layout_
            />
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_
            android:layout_
            android:orientation="vertical" >
            <fragment
                android:id="@+id/content_frag"
                android:name="com.finchframework.uiframework.ContentFragment"
                android:layout_
                android:layout_
                />    
            <fragment
                android:id="@+id/detail_frag"
                android:name="com.finchframework.uiframework.DetailFragment"
                android:layout_
                android:layout_
                />
        </LinearLayout>
</LinearLayout>
  

圖11-5:多個fragment在大平板電腦屏幕上的佈局

多佈局

Android支持開發人員為不同的屏幕尺寸和像素密度提供不同的資源文件。對於分辨率較低或較高的屏幕的程序中,你可能已經遇到了在圖形化方面使用多個變量的問題。通過新的應用wizard創建的所有Android應用都面臨分辨率低、中和高的繪製問題。

在這個例子中,我們將使用Android命名規範,為正常大小的屏幕、大屏幕、繪製模式下的大屏幕創建多個佈局目錄。在前面的程序清單中的佈局會放到layout large文件夾。

現在,我們來創建一個手機屏幕的佈局文件,Android的正常大小屏幕即手機屏幕大小。以下程序清單中的佈局也命名成main.xml,但是它是在layout文件夾下。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="horizontal" >
        <fragment
            android:id="@+id/list_frag"
            android:name="com.finchframework.uiframework.QueryResultsListFragment" 
            android:layout_
            android:layout_
            />
</LinearLayout>
  

該文件只包含一個片段。系統基於屏幕大小選擇使用哪個佈局。代碼所要做的工作大部分是要適應不同的佈局。沒有一段代碼會問「我使用的是哪個佈局?」它不需要問這個問題。響應用戶交互的代碼段是在Fragment類中,因此加載這些佈局的Activity類不需要做額外的操作。

除了前面給出的兩種佈局,在示例代碼段中還有個名為layout-large-port的文件夾,它包含另一個版本的main.xml文件。該文件是用於大屏幕的平板設備的縱向模式。它會把片段自下而上堆疊,而不是並排顯示。對於其他佈局,代碼不需要對佈局做任何調整。