Android RadioButton与BadgeView完美实现红点显示(小技巧)

        今天项目要求在底部导航栏添加红点显示,就引入的BadgeView类,实现出了下面的效果

看到这效果我很开心,满以为完美实现了,然后点击“我的”,发现radiobutton 没有执行check方法,好吧,我就去网上找啊找啊,发现基本上都是推荐用

TabHost来实现,可是我不想用,太啰嗦。

最后,无语间发现了,可以再RadioGroup上浮一层透明layout,包含5个Button,与上图一一对应


<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="1.0px"
        android:layout_above="@+id/main_radio_group"
        android:background="@color/divider_white_bg"/>

    <RadioGroup
        android:id="@+id/main_radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/radio_btn_home"
            style="@style/main_tab_bottom"
            android:checked="true"
            android:drawableTop="@drawable/selector_main_bottom_home"
            android:padding="2dp"
            android:text="@string/main_bottom_home_title"/>

        <RadioButton
            android:id="@+id/radio_btn_house"
            style="@style/main_tab_bottom"
            android:checked="false"
            android:drawableTop="@drawable/selector_main_bottom_house"
            android:text="@string/main_bottom_house_title"/>

        <RadioButton
            android:id="@+id/radio_btn_forum"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/selector_main_bottom_forum"
            android:text="@string/main_bottom_forum_title"
            />

        <RadioButton
            android:id="@+id/radio_btn_group"
            style="@style/main_tab_bottom"
            android:checked="false"
            android:drawableTop="@drawable/selector_main_bottom_group"
            android:text="@string/main_bottom_group_title"/>

        <RadioButton
            android:id="@+id/radio_btn_person"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/selector_main_bottom_person"
            android:text="@string/main_bottom_person_title"/>
    RadioGroup>

    <com.mne.mainaer.ui.view.FlowLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#00000000"
        android:numColumns="5"
        android:orientation="horizontal"
        android:rating="1">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#00000000"
            android:visibility="invisible"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:visibility="invisible"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#00000000"
            android:visibility="invisible"/>

        <Button
            android:id="@+id/btn_msg"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:visibility="invisible"/>

        <Button
            android:id="@+id/btn_my"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:visibility="invisible"/>
    com.mne.mainaer.ui.view.FlowLayout>
RelativeLayout>


然后将BadgeView的target设为对应的Button即可实现

mMyDotView = new BadgeView(this);
mMyDotView.setTargetView(button);//就是这里
mMyDotView.setBackgroundResource(R.drawable.unread);
好了,大功告成!

你可能感兴趣的:(Android RadioButton与BadgeView完美实现红点显示(小技巧))