Android实现底部图标与Fragment的联动实例
程序员文章站
2022-04-13 22:45:53
本文介绍了ndroid实现底部图标与fragment的联动,分享给大家,希望此文章对各位有所帮助。
效果如下:
1.首先在res下的drawable下新建四个图...
本文介绍了ndroid实现底部图标与fragment的联动,分享给大家,希望此文章对各位有所帮助。
效果如下:
1.首先在res下的drawable下新建四个图标的xml,分别把图标的选中和未选中的状态设置好,所有的图片可以放在res下新建的一个drawable-xhdpi目录下,这里仅展示一个图标的xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/ic_nav_home_press"/> <item android:state_checked="false" android:drawable="@drawable/ic_nav_home"/> <item android:drawable="@drawable/ic_nav_home"/> </selector>
2.在布局中开始布局:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.baway.lizongshu.view.activity.mainactivity"> <framelayout android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </framelayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <radiogroup android:id="@+id/rg" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <radiobutton android:id="@+id/fenlei" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="分类" android:button="@null" android:checked="true" android:drawabletop="@drawable/fenlei" android:gravity="center" android:textsize="12sp" android:tag="0" /> <radiobutton android:id="@+id/gouwuche" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="购物车" android:button="@null" android:drawabletop="@drawable/gouwuche" android:gravity="center" android:textsize="12sp" android:tag="1" /> <radiobutton android:id="@+id/qita" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="其他" android:button="@null" android:drawabletop="@drawable/qita" android:gravity="center" android:textsize="12sp" android:tag="2" /> <radiobutton android:id="@+id/wode" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="我的" android:button="@null" android:drawabletop="@drawable/wode" android:gravity="center" android:textsize="12sp" android:tag="3" /> </radiogroup> </linearlayout> </linearlayout>
3.新建四个fragment类,这里仅展示一个
public class fenleifragment extends fragment { @nullable @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) { view view = inflater.inflate(r.layout.fenlei, container, false); return view; } }
4. 主界面中:
public class mainactivity extends appcompatactivity { private radiogroup rg; private fragment[] mfragments; private fragmentmanager fm; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); initdata(); } private void initdata() { //定义一个fragment数组,存放四个fragment mfragments=new fragment[4]; mfragments[0]=new fenleifragment(); mfragments[1]=new gouwuchefragment(); mfragments[2]=new qitafragment(); mfragments[3]=new wodefragment(); //获得fragment管理者 fm = getsupportfragmentmanager(); //处理 fragmenttransaction ft = fm.begintransaction(); ft.add(r.id.framelayout,mfragments[0],"0"); ft.commit(); } private void initview() { rg=(radiogroup) findviewbyid(r.id.rg); //radiogroup的监听事件 rg.setoncheckedchangelistener(new radiogroup.oncheckedchangelistener() { @override public void oncheckedchanged(radiogroup group, int checkedid) { //找到当前选中的图标 radiobutton rb= (radiobutton) group.findviewbyid(checkedid); //找到所选图标的标签并转换为整数类型放到下面的方法中 int i = integer.parseint(rb.gettag().tostring().trim()); showandhidefragment(i); } }); } //展示和隐藏fragment的方法 private void showandhidefragment(int position) { fragmenttransaction transaction = fm.begintransaction(); //如果没有fragment就在framelayout里面加上 if (!mfragments[position].isadded()){ transaction.add(r.id.framelayout,mfragments[position],""+position); } //把所有的fragment设为隐藏 for (fragment fragment:mfragments){ transaction.hide(fragment); } //把选中的设为显示 transaction.show(mfragments[position]); transaction.commit(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。