碎片(Fragment)是一种可以嵌入在活动中的UI片段,可以理解成一个迷你活动。
碎片的简单用法
在一个活动中添加两个碎片,两个碎片平分活动空间
1.新建一个左侧碎片布局left_fragment.xml,这个布局只放置了一个按钮,并让他水平对齐。
2.然后再建一个右侧碎片布局right_fragment.xml
3.新建一个LeftFragment类,让他继承自Fragment.
这里使用suppore-v4包。可以让所有的android 系统版本保持功能一致性,如果说你使用的是系统内置低的Fragment,那么4.2之前的设备运行就会奔溃,虽然说现在基本找不到4.2之前的设备。。。
上面这里重写了Fragment的onCreateView()方法,然后在这个方法中通过LayoutInflater的inflate()方法将刚才定义的left_fragment布局动态加载进来。
4.接下来再重建一个RightFragment类,功能一样。
5.然后修改activity_main.xml中的代码
这里使用标签在布局中添加碎片。注意这里还需要显式的指明要添加的碎片类名,一定也要将类的包名带上。
效果如图,两个碎片平分了活动布局
接下来,在上面的基础上,学习动态添加碎片
碎片的强大之处就在于,可以在程序运行的时候,动态的添加到活动中,根据具体的情况来动态的添加碎片。
1.新建一个another_right_fragment.xml,这个代码和上面的right_fragment.xml代码基本相同,只是将背景色改成了黄色,并将显示的文字改了改。
2.然后新建AnotherRightFragment作为另一个右侧碎片。在onCreateView()方法中加载了刚刚创建的another_right_fagment布局,这样就创建好了另一个碎片。
3.修改activity_main.xml
可以看到将右侧碎片替换成了一个FrameLayout中。
FrameLayout布局是安卓最简单的一个布局,它所有的控件都会被摆放在左上角。
如图示例
4.接下来修改MainActivity中的代码。
首先,给左侧碎片中的按钮注册了一个点击事件,然后调用replaceFragment()方法,动态的添加RightFragment这个碎片,当点击左侧碎片时,又会调用replaceFragment()方法将右侧碎片替换成AnotherRightFragment。
效果如下