欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-08-08 09:26:39
本文介绍了ndroid实现底部图标与fragment的联动,分享给大家,希望此文章对各位有所帮助。 效果如下: 1.首先在res下的drawable下新建四个图...

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

效果如下:

Android实现底部图标与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();

  }


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。