首页 » Android程序设计:第2版 » Android程序设计:第2版全文在线阅读

《Android程序设计:第2版》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文件。该文件是用于大屏幕的平板设备的纵向模式。它会把片段自下而上堆叠,而不是并排显示。对于其他布局,代码不需要对布局做任何调整。