本文单单讲fragment的一些基础应用,关于activity与fragment的数据交互暂时不谈
什么是fragment
fragment字面意思就是碎片,Android里面与用户交互的就是Activity,如果把Activity比作画板那么fragment就相当于画布(也说明了fragment需要寄生于activity),当然一个画板上面可以有多个画布,一个activity里面可以有多个fragment划分用户的视觉空间
fragment的使用
静态添加
布局文件中添加<fragment>
//添加了两个fragment 在程序运行时会将activity分成两个部分
//这里面的属性name指定了这个fragment里面的显示内容
//采用线性布局 将宽度设为0dp,通过权重设置两个fragment在页面中占比
<fragment
android:id="@+id/leftFragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:name="com.example.kotlin.LeftFragment"
android:id="@+id/news_content" />
<fragment
android:id="@+id/rightFragment"
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:name="com.example.kotlin.RightFragment"
android:id="@+id/news_content" />
还需要创建两个布局去指定每一个fragment里面展示的内容
left_fragment里面的布局代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000">
</androidx.constraintlayout.widget.ConstraintLayout>
这里什么都没有展示只是将背景颜色改成了黑色 (当然你可以根据需要在这个布局里面添加你需要的东西)
- 逻辑层代码添加
class LeftFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.left_fragment,container,false)
}
}
- 声明一个leftFragment类继承Fragment
- 指定这个fragment显示哪一个布局关键代码就是 return inflater.inflate(R.layout.left_fragment,container,false)
- 当然rightFragment是一摸一样的,只是把指定的布局R.layout.right_fragment(这个就是定义的布局名字)
代码运行结果
界面根据我们预想的成为如图所示,这里我是将左fragment的背景颜色改了去区分两个fragment
好了这就是静态添加fragment的方法
总结
1.在布局文件里面添加<fragment>
2.创建布局文件,展现fragment的内容
3.逻辑层创建类继承Fragment类,在onViewCreate()方法中将这个类需要展示的布局放置上去。
4.<fragment>标签里面的name需要指定逻辑层创建的类
不知道上面讲的是否够清楚,fragment的作用非常的广阔,这是最为基础的,后面还会有动态添加fragment,fragment数据的传递,Android不希望有太多的Activity,它更倾向于一个应用只有一个Activity其他的都是由fragment显示,所以fragment的基础相对重要
上面如有错误,还望指正