Android创建底部菜单栏
来源:互联网 发布:为什么胡歌没女友 知乎 编辑:程序博客网 时间:2024/05/16 08:04
布局
使用RadioGroup和RadioButton配合Fragment
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ado.video.TabMenuActivity"> <!--Fragment容器--> <FrameLayout android:id="@+id/home_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!--底部tab栏--> <RadioGroup android:id="@+id/home_tab" android:layout_width="match_parent" android:layout_height="80dp" android:layout_alignParentBottom="true" android:background="#2da174" android:orientation="horizontal"> <!--为每个tab的图片和文字设置选择器--> <RadioButton android:id="@+id/tab_home" style="@style/HomeTabButton" android:drawableTop="@drawable/selector_tab_home" android:text="home" /> <RadioButton android:id="@+id/tab_sports" style="@style/HomeTabButton" android:drawableTop="@drawable/selector_tab_sport" android:text="sports" /> <RadioButton android:id="@+id/tab_profile" style="@style/HomeTabButton" android:drawableTop="@drawable/selector_tab_profile" android:text="profile" /> </RadioGroup></RelativeLayout>
RadioButton的style
<style name="HomeTabButton"> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:gravity">center</item> <item name="android:button">@null</item> <item name="android:textSize">17sp</item> <item name="android:textColor">@drawable/selector_tab_text</item> </style>
Activity代码
public class TabMenuActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { @BindView(R.id.home_container) FrameLayout homeContainer; @BindView(R.id.tab_home) RadioButton tabHome; @BindView(R.id.tab_sports) RadioButton tabSports; @BindView(R.id.tab_profile) RadioButton tabProfile; @BindView(R.id.home_tab) RadioGroup homeTab; private OneFragment oneFragment; private TwoFragment twoFragment; private ThreeFragment threeFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab_menu); ButterKnife.bind(this); homeTab.setOnCheckedChangeListener(this); //默认选中首页 //必须先监听了,再设置才有效 homeTab.check(R.id.tab_home); } /** * 隐藏所有Fragment * * @param transaction */ private void hideAllFragments(FragmentTransaction transaction) { if (oneFragment != null) { transaction.hide(oneFragment); } if (twoFragment != null) { transaction.hide(twoFragment); } if (threeFragment != null) { transaction.hide(threeFragment); } } @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); hideAllFragments(transaction); //每个tab选中前先隐藏,否则会出现重叠状态 //tab没有出现过才创建,有了就直接通过show()显示 switch (i) { case R.id.tab_home: if (oneFragment == null) { oneFragment = new OneFragment(); transaction.add(R.id.home_container, oneFragment); } else { transaction.show(oneFragment); } break; case R.id.tab_sports: if (twoFragment == null) { twoFragment = new TwoFragment(); transaction.add(R.id.home_container, twoFragment); } else { transaction.show(twoFragment); } break; case R.id.tab_profile: if (threeFragment == null) { threeFragment = new ThreeFragment(); transaction.add(R.id.home_container, threeFragment); } else { transaction.show(threeFragment); } break; } //最后记得提交了才生效 transaction.commit(); }}
0 0
- Android创建底部菜单栏
- android实现底部菜单栏
- android实现底部菜单栏
- Android底部菜单栏设计
- android底部菜单栏demo
- android底部菜单栏实现
- android底部菜单栏
- Android底部菜单栏
- Android--底部菜单栏实现
- android底部菜单栏demo
- android底部菜单栏demo .
- Android底部菜单栏
- Android 底部菜单栏实现
- android实现底部菜单栏
- 【转】Android创建窗体底部菜单栏,有源码
- 通过TabActivity创建底部菜单栏
- android 底部菜单栏(仿微信顶部菜单栏)
- Android仿微信底部菜单栏+顶部菜单栏
- 如何设置Vimrc
- 刚接触android开发时碰到的一些问题
- linux之信号处理函数signal和sigaction
- 导入Logstash日志到Elasticsearch
- Error:(16, 0) Gradle DSL method not found: 'Android()'
- Android创建底部菜单栏
- Android开发第1天
- Leetcode 113. Path Sum II (Medium) (cpp)
- 09-CoreData iOS10.0变化
- Range Sum Query - Immutable
- 10-NSPersistentContainer介绍
- 11-使用NSPersistentContainer搭建CoreData Stack
- 12-CoreData操作大量数据时的注意细节
- 13-NSPersistentContainer性能比较