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>
每个碎片需要唯一的标识符。