zoukankan      html  css  js  c++  java
  • 如何用RadioButton做一个底部的切换栏

    上面的效果是用Radio进行制作的,一般我们做底部的切换栏的时候需要让按钮和文字都有一个选中的状态,然后根据点击不同的按钮触发不同的页面,这里的页面一般都是fragment做的。这里我们不讨论复杂的东西,只是讲如何实现这样的效果。这里的关键点是中间的按钮和两边的按钮没有互斥关系,仅仅是一个独立的ImageView,还有就是按钮的文字需要根据选中的状态进行变化,按钮的图片需要根据状态进行变化。

    一、定义按钮的图片和文字效果

    我们在res中建立一个color的目录,建立一个main_bottombar_text_selector.xml的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:color="#ff0000" android:state_pressed="false" android:state_checked="true" />
        <item android:color="#555555"/>
    </selector>

    这里可以明显的看出,我用到的仅仅是颜色值,而根据不同的状态颜色值是不同的。下面开始建立按钮图片的效果。

    在drawable中建立一个main_bottombar_icon_home_selector.xml,写入如下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/tab_icon_home_highlight" android:state_checked="true" android:state_pressed="false" />
        <item android:drawable="@drawable/tab_icon_home" />
    </selector>

    这里和上面不同点在于根据不同的状态选取的是图片。

    二、准备就绪,实现效果

    实现效果的方式超级简单,和linearLayout中放控件一模一样。

    <RadioGroup
            android:id="@+id/main_bottom_bar"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:orientation="horizontal"
            android:paddingTop="5dp"
            >
    
            <RadioButton
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawablePadding="1dp"
                android:drawableTop="@drawable/main_bottombar_icon_home_selector"
                android:gravity="center"
                android:text="Tab01"
                android:textColor="@color/main_bottombar_text_selector"
                android:textSize="11sp"
                />
    
            <RadioButton
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawablePadding="1dp"
                android:drawableTop="@drawable/main_bottombar_icon_home_selector"
                android:gravity="center"
                android:text="Tab02"
                android:textColor="@color/main_bottombar_text_selector"
                android:textSize="11sp"
                />
    
            <ImageButton
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginTop="-3dp"
                android:layout_weight="1"
                android:src="@mipmap/ic_launcher"
                />
    
            <RadioButton
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawablePadding="1dp"
                android:drawableTop="@drawable/main_bottombar_icon_home_selector"
                android:gravity="center"
                android:text="Tab03"
                android:textColor="@color/main_bottombar_text_selector"
                android:textSize="11sp"
                />
    
            <RadioButton
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawablePadding="1dp"
                android:drawableTop="@drawable/main_bottombar_icon_home_selector"
                android:gravity="center"
                android:text="Tab04"
                android:textColor="@color/main_bottombar_text_selector"
                android:textSize="11sp"
                />
    
    
        </RadioGroup>

    需要注意的是radioGroup默认是纵向排列的,需要设置方向为横向才行哦~ 

     

    如果你需要顶部的切换tab,可以参考:

    https://github.com/hoang8f/android-segmented-control

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0512/1615.html

    如果你还需要红点的话,可以参考我的一个github工程,是通过自定义RadioGroup来进行红点的控制的:

    https://github.com/tianzhijiexian/BottomTabBar

    源码下载:http://download.csdn.net/detail/shark0017/8801535

    参考自:http://www.tuicool.com/articles/7VBbu2m

  • 相关阅读:
    office excel无法打开超链接解决方法
    mysql默认的数据库介绍(还没看,找时间研究)
    mysql目录结构及配置文件
    springboot-actuator应用后台监控
    服务器端负载均衡和客户端负载均衡的区别
    Spring Cloud Eureka 自我保护机制
    HDU 4028 The time of a day (dp+离散化)
    HDU 3652 B-number(数位DP)
    HDU 2966 In case of failure
    HDU 3622 Bomb Game
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/4572959.html
Copyright © 2011-2022 走看看