FrameLayout+RadioGroup+TabLayout+viewpager 实现复杂界面布局
一 前言
viewpager+fragment 的不足
在之前的项目中所采用的是viewpager+fragment 的方式进行的框架搭建实现点击按钮切换不同的页面,不足之处就在于 在某种特殊的场景布局中就显得力不从心,尤其像新闻资讯的首页,以及淘宝购物的首页等,都属于复杂布局,若是采用之前的方式,viewpager里面嵌套viewpager 会发生组件之间冲突的问题,不利于后期的维护
FrameLayout+RadioGrup 布局
采用这种布局就可以避免上面的问题发生,可以只用一个FrameLayout就可以嵌套多个Fragment而且互不影响,通过Fragment的切换方法就可以切到不同的Fragment,在面对大型的复杂页面布局就可以很好的处理好组件之间的关系
二 框架搭建准备工作
涉及知识点
Fragment事务,第三方tablayout库 ,tablayout+viewpager联动,FrameLayout+RadioGroup联动
导入依赖
implementation 'com.android.support:design:27.0.2'
三 框架搭建详细步骤
1布局搭建
activity_main.xml
<LinearLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/frm" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9" /> <RadioGroup android:id="@+id/group" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal" android:layout_weight="1" android:background="@android:color/darker_gray" > <RadioButton android:id="@+id/btn1" android:layout_width="0dp" android:checked="true" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:padding="10sp" android:textColor="@drawable/fontcolor" android:gravity="center" android:drawableTop="@drawable/home1" android:text="首页" /> <RadioButton android:id="@+id/btn2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:textColor="@drawable/fontcolor" android:gravity="center" android:padding="10sp" android:drawableTop="@drawable/govaffair1" android:text="排行榜" /> <RadioButton android:id="@+id/btn3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:textColor="@drawable/fontcolor" android:gravity="center" android:padding="10sp" android:drawableTop="@drawable/newscenter1" android:text="微头条" /> <RadioButton android:id="@+id/btn4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"