前言
Android实现底部导航栏的方式很多,有5种实现方式。
作者使用过两种:RadioGroup+Fragment;FragmentTabHost;其中第一种更容易上手。
实现效果
目录
- 创建RadioGroup
- 监听,切换 Fragment
创建RadioGroup
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="match_parent"
android:layout_height="56dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_chat"
style="@style/BottomNavigationStyle"
android:drawableTop="@drawable/main_bottom_chat_selector"
android:text="@string/navigation_chat" />
<RadioButton
android:id="@+id/rb_friend"
style="@style/BottomNavigationStyle"
android:drawableTop="@drawable/main_bottom_friend_selector"
android:text="@string/navigation_friend" />
<RadioButton
android:id="@+id/rb_setting"
style="@style/BottomNavigationStyle"
android:drawableTop="@drawable/main_bottom_setting_selector"
android:text="@string/navigation_setting" />
</RadioGroup>
设置style
<style name="BottomNavigationStyle">
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
<item name="android:button">@null</item>
<item name="android:textSize">10sp</item>
<item name="android:gravity">center</item>
<item name="android:layout_height">match_parent</item>
</style>
监听,切换 Fragment
//监听RadioGroup的变化
private void listenRgChange() {
//RadioGroup 绑定监听器
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
Fragment fragment = null;
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 检查被点击的ID
switch (checkedId) {
case R.id.rb_chat:
fragment = chatFragment;
break;
case R.id.rb_friend:
fragment = friendFragmengt;
break;
case R.id.rb_setting:
fragment = settingFragment;
break;
}
//切换到对应的Fragement
switchFragment(fragment);
}
});
//设置默认页面为会话页面
radioGroup.check(R.id.rb_chat);
}
//实现“切换到对应的Fragement”
private void switchFragment(Fragment fragment) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
supportFragmentManager.beginTransaction().replace(R.id.framelayout, fragment).commit();
}