当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现底部图标与Fragment的联动实例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

东北黑社会老大乔四爷,蒙面歌王第三期,4948游戏盒下载

本文介绍了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();

  }


}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网