自定义 Tab Indicator

自定义 Tab Indicator

为指定的activity创建一个自定义的Theme,然后指定这个theme的父theme,再重写其中的actiobarTabStyle属性来改变navigation tabs所使用的指示器(Indicater)。actionbarTabStyle属性再指向另一个Style资源。在该style资源里,指定它的父style,再通过指定一个state-list drawable资源来重写background属性。

note:

一个state-list drawable是重要的,它可以通过不同的背景来反映当前选择的tab与其他没有被选的tab的不同。

例如,下面的这个是一个state-list drawable,它为actionbar tabs的多种不同状态指定了不同背景图片:

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

    <!-- 按钮没有按下的状态 -->

    <!-- 没有焦点的状态 -->
    <item android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/abc_tab_indicator_material"/>
    <item android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/actionbar_tab_indicator"/>

    <!-- 有焦点的状态 (例如D-Pad控制或者鼠标经过) -->
    <item android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/abc_tab_indicator_mtrl_alpha"/>
    <item android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/actionbar_tab_indicator"/>

    <!--  按钮按下的状态D -->

    <!-- 没有焦点的状态 -->
    <item android:state_pressed="true"
        android:state_selected="false"
        android:state_focused="false"
        android:drawable="@drawable/abc_textfield_search_material"/>
    <item android:state_pressed="true"
        android:state_selected="true"
        android:state_focused="false"
        android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>

    <!--有焦点的状态 (例如D-Pad控制或者鼠标经过)-->
    <item android:state_pressed="true"
        android:state_focused="true"
        android:state_selected="false"
        android:drawable="@drawable/abc_switch_thumb_material"/>
    <item android:state_pressed="true"
        android:state_focused="true"
        android:state_selected="true"
        android:drawable="@drawable/abc_ic_search_api_mtrl_alpha"/>

</selector>
仅支持 Android 3.0 和更高leave时

当仅支持 Android 3.0 和更高时,样式 XML 文件应该是这样的:

res/values/themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- 应用于程序或活动的主题 -->
    <style name="appCustomTheme_1"
        parent="android:Theme.Holo">
        <item name="android:actionBarTabStyle">@style/myActionbarTab</item>
    </style>

    <!-- ActionBar tabs 标签样式 -->
    <style name="myActionbarTab"
        parent="android:Widget.Holo.ActionBar">
        <!-- 标签指示器 -->
        <item name="android:background">@drawable/actionbar_tab_indicator</item>
    </style>

</resources>

样式如图:

这里写图片描述

参考网址:
http://hukai.me/android-training-course-in-chinese/basics/actionbar/styling.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值