Android UI Android碎片
在小屏幕设备中,activity通常填充整个屏幕。而这个activity是一个视图的容器。
为了更好地在平板电脑上组织UI,我们可以使用“mini-activities”。每个mini-activities包含自己的一组视图。
一个activity可以包含一个或多个这些mini-activities。这些mini-activities被称为碎片(Fragment)。
碎片可以包含视图,就像activity一样。碎片总是会嵌入在一个activity中。
碎片形成用户界面的原子单位,可以在activity中动态添加或删除。
我们可以将Android中的片段的概念视为桌面用户界面中的面板。
添加碎片
以下代码显示了碎片的基本用法。
在 res/layout 文件夹中,添加一个新文件并将其命名为 fragment1.xml 。填写以下内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00FF00"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is fragment #1"
android:textColor="#000000"
android:textSize="25sp" />
</LinearLayout>
另外在 res/layout 文件夹中,添加另一个新文件,并将其命名为 fragment2.xml 。填充如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFE00"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is fragment #2"
android:textColor="#000000"
android:textSize="25sp" />
</LinearLayout>
在 activity_main.xml 中,添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment
android:name="cn.w3cschool.myapplication3.app.Fragment1"
android:id="@+id/fragment1"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
<fragment
android:name="cn.w3cschool.myapplication3.app.Fragment2"
android:id="@+id/fragment2"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
</LinearLayout>
在 com.java2s.Fragments 包名称下,添加两个Java类文件并将其命名为 Fragment1.java 和 Fragment2.java,将以下代码添加到 Fragment1.java:
package cn.w3cschool.myapplication3.app;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment1, container, false);
}
}
将以下代码添加到 Fragment2.java :
package cn.w3cschool.myapplication3.app;
// www.w3cschool.cn
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
return inflater.inflate(
R.layout.fragment2, container, false);
}
}

注意
一个碎片的行为非常像一个activity,它有:
- 一个Java类
- 它从XML文件加载其UI。
XML文件包含你预期从某个activity获得的所有常用UI元素:TextView,EditText,Button等。
碎片的Java类需要扩展 Fragment 基类:
public class Fragment1 extends Fragment {
}
除了 Fragment 基类,碎片还可以扩展一些Fragment 类的其他几个子类,例如 DialogFragment,ListFragment和PreferenceFragment 。
要绘制碎片的UI,请覆盖 onCreateView()方法。此方法需要返回一个View对象。
你可以使用LayoutInflater对象从指定的XML文件中扩充UI。要向activity添加片段,请使<fragment>元素。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
/* www.w3cschool.cn*/
<fragment
android:name="cn.w3cschool.Fragments.Fragment1"
android:id="@+id/fragment1"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
<fragment
android:name="cn.w3cschool.Fragments.Fragment2"
android:id="@+id/fragment2"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
</LinearLayout>
每个碎片需要唯一的标识符。