从零开始搭建app—首页导航栏实现(一)

本文介绍了一种在Android应用中实现底部导航栏的方法,通过使用RadioGroup和RadioButton组件结合样式和选择器,实现了导航栏的选中状态变化效果。

要实现的效果



目前项目结构


说明:

目前计划应用由一个HomeActivity加载三个Fragment(HomeFragment,MessageFragment,MineFragment)做切换作为主体.

BaseFragement和BaseActivity为基类,为后期配置一些Activity和Fragemnt的共有属性做准备.

MyApplication为app一启动时,做一些初始操作。


首页底部导航栏实现

底部导航栏由一个横向排布radiogroup和三个radiobutton组成,布局如下。

<?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:id="@+id/activity_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.lulu.myvedio.activity.HomeActivity">


    <RadioGroup
        android:id="@+id/rbg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        >
        <RadioButton
            android:id="@+id/home"
            style="@style/home_rb_style"
            android:drawableTop="@drawable/select_mian"
            android:text="首页" />

        <RadioButton
            android:id="@+id/message"
            style="@style/home_rb_style"
            android:drawableTop="@drawable/select_message"
            android:text="信息" />

        <RadioButton
            android:id="@+id/mine"
            style="@style/home_rb_style"
            android:drawableTop="@drawable/select_mine"
            android:text="我的" />

    </RadioGroup>
</RelativeLayout>

由于三个radiobutton的效果都一致,都为选中变颜色,所以给其设置了统一的style。

在values文件夹下的styles文件下创建一个style

<style name="home_rb_style">
    <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:button">@null</item>
    <item name="android:drawablePadding">3dp</item>
    <item name="android:gravity">center</item>
    <item name="android:textColor">@color/select_rb_text</item>
    <item name="android:background">@color/white</item>
    <item name="android:paddingTop">4dp</item>
</style>
注意这里图片和文字都有个选中与不选中的差别。

图片的实现方式是准备两张图片,右击res的drawable文件夹,选择new-drawable resource file 选selector命名select_mian

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@mipmap/application_2xx" android:state_checked="true" />
    <item android:drawable="@mipmap/application_xx" />
</selector>
文字的实现方式,在res下创建一个color文件夹右击选择new - color resource file命名select_rb_text

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/rb_text_select" android:state_checked="true"/>
    <item android:color="@color/rb_text_normal"/>
</selector>

注意:设置radiobutton的默认选中,不能直接在代码里面写,不然会一直选中不能切换。可以给radiobutton写一个id,然后实例化他,在代码里设置默认选中

private void initView() {
    rbg = ((RadioGroup) findViewById(R.id.rbg));
    rbg.setOnCheckedChangeListener(this);
    rb_home = ((RadioButton) findViewById(R.id.home));
    rb_home.setChecked(true);//设置默认选中
}

































评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值