碎片是一种可以镶入活动中的UI片段,它的存在使大屏幕的空间使用更加合理。因此碎片在平板上的使用十分广泛。
为了更好地演示碎片的使用,新建一个项目进行练手。
在layout目录下,新建两个布局文件,作为两个碎片。图片如下:
修改两个碎片的代码,如下:
其中在左边的碎片中设置了一个按钮,在右边的碎片中设置了一个TextView,并将背景设置为红色,以便区分左右两个碎片。
接下来 新建一个LeftFragment类,继承自Fragment类。Fragment包有两个,一个是系统内置的android.app.Fragment,一个是support-v4库中的android.support.v4.app.Fragment。由于系统内置的Fragment是在Android 4.2版本之后才支持的,Android 4.2版本之前运行会崩溃。所以建议使用support-v4库下的Fragment。另外,v4库并不需要添加库依赖,因为在build.gradle之中,已经添加了v7库,而v7库中包含v4库。
修改代码如下接下来修改代码如下:
其中重写了onCreateView()方法,通过LayoutInfalter的infalter方法将left_fragment.xml加载进来。
RightFragment的代码与之相似。
接下来修改activity_main.xml:
运行效果如下:
碎片的动态加载:
碎片的加载方式除了以上之外,还可以动态加载。
新建一个AnotherRightFragment类,修改代码如下:
新建一个another_right_fragment.xml,修改代码如下:
接着修改activity_main.xml的代码:
其中将右侧碎片替换为一个FragmeLayout布局。
接着在MainActivity中为Button注册点击事件,通过点击按钮实现右侧碎片的动态加载,代码如下:
其中定义了一个replaceFragment()方法来实现碎片的替换。从replaceFragment()方法可以看出,动态加载碎片分为5步:
1.创建待添加的碎片实例
2.通过调用getSupportFragmentManager()方法获取FragmentManager实例。
3.通过调用beginTransaction()方法开启一个事务。
4.通过replace()方法,将容器的id和待添加的碎片。
5.调用commit()方法提交事务。
运行效果如下:
PS:由于之前的运行效果不明显,我已将左侧碎片的背景颜色改为蓝色,这样运行效果会更加明显。