android radiogroup 底部菜单,Android 底部菜单栏(RadioGroup+Fragment)美化

众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化了一下,需要的可以看下。

效果图:

e5f2cb8baaf3671d1011a1ef12e2a268.gif

项目结构

d9e102a427c16d830060e7d685aaf1d6.png

MainActivity.java

public class MainActivity extends AppCompatActivity {

private FrameLayout frameLayout;

private RadioGroup radioGroup;

private Fragment[] mFragments;

private int mIndex;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initFragment();

setRadioGroupListener();

}

private void initFragment() {

radioGroup = (RadioGroup) findViewById(R.id.radioGroup);

frameLayout = (FrameLayout) findViewById(R.id.fl_content);

HomeFragment homeFragment = new HomeFragment();

ShopFragment shopFragment = new ShopFragment();

LiveFragment liveFragment = new LiveFragment();

ShoppingCarFragment shoppingCarFragment = new ShoppingCarFragment();

MineFragment mineFragment = new MineFragment();

//添加到数组

mFragments = new Fragment[]{homeFragment, shopFragment, liveFragment, shoppingCarFragment, mineFragment};

//开启事务

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

//添加首页

ft.add(R.id.fl_content, homeFragment).commit();

//默认设置为第0个

setIndexSelected(0);

}

private void setIndexSelected(int index) {

if (mIndex == index) {

return;

}

FragmentManager fragmentManager = getSupportFragmentManager();

FragmentTransaction ft = fragmentManager.beginTransaction();

//隐藏

ft.hide(mFragments[mIndex]);

//判断是否添加

if (!mFragments[index].isAdded()) {

ft.add(R.id.fl_content, mFragments[index]).show(mFragments[index]);

} else {

ft.show(mFragments[index]);

}

ft.commit();

//再次赋值

mIndex = index;

}

private void setRadioGroupListener() {

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup radioGroup, int i) {

switch (i) {

case R.id.rb_home:

setIndexSelected(0);

break;

case R.id.rb_shop:

setIndexSelected(1);

break;

case R.id.rb_live:

setIndexSelected(2);

break;

case R.id.rb_shopping_car:

setIndexSelected(3);

break;

case R.id.rb_mine:

setIndexSelected(4);

break;

default:

setIndexSelected(0);

break;

}

}

});

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

//仅当activity为task根(即首个启动activity)时才生效,这个方法不会改变task中的activity状态,

// 按下返回键的作用跟按下HOME效果一样;重新点击应用还是回到应用退出前的状态;

moveTaskToBack(false);

return true;

}

return super.onKeyDown(keyCode, event);

}

}Fragment,这里只列出HomeFragment的,其他都是一样

public class HomeFragment extends BaseFragment {

public HomeFragment() {

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view=inflater.inflate(R.layout.fragment_home,container,false);

return view;

}

}activity_main.xml布局文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/fl_content"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_above="@+id/line" />

android:id="@+id/line"

android:layout_width="match_parent"

android:layout_height="@dimen/line_size"

android:layout_above="@+id/radioGroup"

android:background="#9e9e9e" />

android:id="@+id/radioGroup"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:clickable="true"

android:gravity="center"

android:orientation="horizontal"

android:padding="3dp">

android:id="@+id/rb_home"

style="@style/RadioButtonStyle"

android:checked="true"

android:drawableTop="@drawable/btn_home"

android:text="@string/home" />

android:id="@+id/rb_shop"

style="@style/RadioButtonStyle"

android:drawableTop="@drawable/btn_shop"

android:text="@string/shop" />

android:id="@+id/rb_live"

style="@style/RadioButtonStyle"

android:drawableTop="@drawable/btn_live"

android:text="@string/live" />

android:id="@+id/rb_shopping_car"

style="@style/RadioButtonStyle"

android:drawableTop="@drawable/btn_shopping_car"

android:text="@string/shopping_car" />

android:id="@+id/rb_mine"

style="@style/RadioButtonStyle"

android:drawableTop="@drawable/btn_mine"

android:text="@string/mine" />

RadioButton的样式

0dp

1

match_parent

10dp

10dp

@null

center

@color/color_radiobutton

10sp

Demo下载地址:http://download..net/download/baiyulinlin1/9895564

温馨提示:以后我自己写的demo都是用Android Studio写的了,用Eclipse的同学要的话需要自己改一下,时代在进步,工具也在升级!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值