(一)开始____5、用Fragment构建一个动态UI——搭建一个灵活的UI

分享到:

负责人:River

原文链接:http://developer.android.com/training/basics/fragments/fragment-ui.html

 

构建灵活的用户界面 (Build a flexible UI)

当你设计支持广泛屏幕大小的应用时,你可以在不同的布局配置中重用你的frament,在可用的屏幕空间基础上优化用户体验。 例如,在手持设备上,对于一个单窗口的用户界面来说同一时间可能只适合显示一个fragment。 反之,你可能想在尺寸更大平板的两端设置更多的fragment以显示更多的信息给用户

fragments-screen-mock.png

如上图:两个fragment,同一个activity,不同的配置,显示在不同的屏幕尺寸上。在大的屏幕中,两个fragment各占屏幕一端,但是在手持设备中,在同一时间,仅仅只占有一个fragment,两个fragment必须相互替换为用户导航。为创建一个动态的体验,FragmentManager类提供了方法允许你在activity运行时对fragment进行添加,移除,和替换。

Add a Fragment to an Activity at Runtime

相比上节课提到的使用<fragment>标签在布局文件中为activity定义一个fragment组件,更好的方式是在activity运行时添加,而且这样做是必须的,如果你想在activity的生命周期中变换fragment的话。

执行类似添加或者删除fragment的事务,你必须使用FragmentManager创建一个FragmentTransaction,它提供了添加,删除以及其他fragment事务的API。 如果你的activity允许移除或者替换fragment,你应该在activity的onCreate()方法中添加初始化的fragment。 在你处理fragment的时候,有一个很重要的规则(尤其是你在运行时添加fragment) 那就是你的fragment放置位置的布局中必须有一个视图容器。 下面这个布局是上节课在同一时间只显示一个fragment布局的替代品,为了将一个fragment替换成另一个,这个activity布局包含了一个空的FrameLayout作为fragment容器。 注意这个文件名跟上节课的布局文件名字一样,但是这个布局并没有指定在“高分辨率”目录中(译者注:请注意下面xml的路径,res/layout这个layout文件夹并没有像上节课提到的是一个layout-large文件夹),如此这个布局是用在比large更小的设备屏幕上,因为这个屏幕不能在同一时间充满两个fragment。 res/layout/news_articles.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
昵    称:
验证码:

相关文档: