本文介绍了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(); }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android实现底部图标与Fragment的联动实例全部内容,希望文章能够帮你解决Android实现底部图标与Fragment的联动实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)