RadioGroup +RadioButtom 是做单选的,RadioGroup 里面的View 只能选中一个。想一下我们要做的底部导航栏,是不是就是一个单选模式呢?当然是,每次只能选中一个页面嘛,因此用RadioGroup + RadioButton 来实现底部导航栏也是一种方式。
RadioButton 有默认的选中与非选中的样式,默认颜色是colorAcent,效果是这样的:
RadioGroup效果.png
因此我们要用RadioGroup+RadioButton 实现底部导航栏,首先,就是去掉它的默认样式,因此,我们来自定义一个style:
<style name="RadioGroupButtonStyle" >
<!-- 这个属性是去掉button 默认样式-->
<item name="android:button">@null</item>
<item name="android:gravity">center</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:textSize">12sp</item>
<item name="android:textColor">@color/color_selector</item>
</style>
style 里面定义了RadioButton 的属性,现在我们直接给RadioButton 设置style 就好了,看先页面的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/home_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
</FrameLayout>
<View android:layout_width="match_parent"
android:layout_height="0.5dp"
android:alpha="0.6"
android:background="@android:color/darker_gray"
<RadioGroup
android:id="@+id/radio_group_button"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center"
android:background="@android:color/white"
<RadioButton
android:id="@+id/radio_button_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="首页"
android:drawableTop="@drawable/tab_home_selector"
style="@style/RadioGroupButtonStyle"
<RadioButton
android:id="@+id/radio_button_discovery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发现"
android:drawableTop="@drawable/tab_discovery_selector"
style="@style/RadioGroupButtonStyle"
<RadioButton
android:id="@+id/radio_button_attention"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关注"
android:drawableTop="@drawable/tab_attention_selector"
style="@style/RadioGroupButtonStyle"
<RadioButton
android:id="@+id/radio_button_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的"
android:drawableTop="@drawable/tab_profile_selector"
style="@style/RadioGroupButtonStyle"
</RadioGroup>
</LinearLayout>
很简单,添加一个RadioGroup 和 四个 RadioButton ,因为去掉了原来的样式,因此要设置我们每个RadioButton 显示的图标。
布局文件定义好了之后,看一下Activity 中的代码: