映月读书网 > 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文件。该文件是用于大屏幕的平板设备的纵向模式。它会把片段自下而上堆叠,而不是并排显示。对于其他布局,代码不需要对布局做任何调整。