Android实现底部图标与Fragment的联动实例

Android实现底部图标与Fragment的联动实例,第1张

概述本文介绍了ndroid实现底部图标与Fragment的联动,分享给大家,希望此文章对各位有所帮助。

本文介绍了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的联动实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存