【问题标题】:Change tab color, ActionBarCompat更改标签颜色,ActionBarCompat
【发布时间】:2014-05-08 03:28:20
【问题描述】:

我想改变标签的颜色,这是我的代码

action_bar_stacked_background.xml

<!-- STATES WHEN BUTTON IS NOT PRESSED -->


<!-- Non focused states -->
<item android:drawable="@drawable/tab_unselected" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/tab_selected" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>

<!-- Focused states (such as when focused with a d-pad or mouse hover) -->

<item android:drawable="@drawable/tab_unselected" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/tab_selected" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>

我的样式.xml

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@drawable/action_bar_background</item>  
    <item name="background">@color/background_lista</item>
    <item name="actionModeBackground">@color/actionbar_color</item>
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
    <item name="subtitleTextStyle">@style/MyActionBarSubtitleText</item>
    <item name="homeAsUpIndicator">@drawable/ic_actionbar_back_button</item>

    <!-- Support library compatibility -->
    <item name="actionBarTabStyle">@style/MyActionBarTabs</item>
     Support library compatibility -->
    <!-- <item name="background">@drawable/actionbar_background</item> -->
</style>

<style name="MyActionBarTabs" parent="@style/Widget.AppCompat.ActionBar.TabView">
    <item name="android:background">@drawable/action_bar_stacked_background</item>
</style>

我的价值观-v11/styles.xml

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@drawable/action_bar_background</item>
    <item name="background">@color/actionbar_color</item>
    <item name="android:actionModeBackground">@color/actionbar_color</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
    <item name="android:subtitleTextStyle">@style/MyActionBarSubtitleText</item>        
    <item name="android:homeAsUpIndicator">@drawable/ic_actionbar_back_button</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabs</item>
    <!-- Support library compatibility -->
    <!-- <item name="background">@drawable/actionbar_background</item> -->
</style> 

<style name="MyActionBarTabs" parent="@style/Widget.AppCompat.ActionBar.TabView">
    <item name="android:background">@drawable/action_bar_stacked_background</item>
</style>

tab_selected.xml

<!-- draw bottom line to fill the spaces between tabs -->
<item android:top="63dp">
    <shape android:shape="rectangle" >
        <solid android:color="#898989" />
    </shape>
</item>
<!-- leave bottom line only 1px of height, the rest is masked out -->
<item
    android:bottom="1px"
    android:top="63dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/color_background_stacked" />
    </shape>
</item>
<!-- draw tab background -->
<item
    android:left="@dimen/tab_space"
    android:right="@dimen/tab_space">
    <shape android:shape="rectangle" >
        <corners
            android:bottomLeftRadius="0.1dp"
            android:bottomRightRadius="0.1dp"
            android:topLeftRadius="@dimen/corner_radius"
            android:topRightRadius="@dimen/corner_radius" />

        <gradient
            android:angle="90"
            android:endColor="#ccc"
            android:startColor="@color/color_background_stacked" />

        <stroke
            android:width="1px"
            android:color="#898989" />
    </shape>
</item>
<!-- mask out the bottom line of the tab shape -->
<item
    android:left="@dimen/tab_space_plus1"
    android:right="@dimen/tab_space_plus1"
    android:top="63dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/color_underline_stacked" />
    </shape>
</item>

和 tab_unselected.xml

<item android:top="63dp">
    <shape android:shape="rectangle" >
        <solid android:color="#898989" />
    </shape>
</item>
<item
    android:bottom="1px"
    android:top="63dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/color_background_stacked" />
    </shape>
</item>
<item
    android:left="@dimen/tab_space"
    android:right="@dimen/tab_space">
    <shape android:shape="rectangle" >
        <corners
            android:bottomLeftRadius="0.1dp"
            android:bottomRightRadius="0.1dp"
            android:topLeftRadius="@dimen/corner_radius"
            android:topRightRadius="@dimen/corner_radius" />

        <gradient  
            android:angle="90"
            android:endColor="#aaa"
            android:startColor="#ddd" />

        <stroke
            android:width="1px"
            android:color="#898989" />
    </shape>
</item>

选项卡显示为灰色背景和蓝色下划线,我只想更改下划线颜色。我该如何解决?

您好。

【问题讨论】:

  • 改变你的笔触颜色
  • 我可以更改 tab_selected 和 tab_unselected 的值,但在操作栏上不起作用

标签: android android-actionbar android-actionbar-compat


【解决方案1】:

actionBarTabStyle attribute 应该使用基本的Application/Activity 主题,而不是ActionBar 样式

创建一个这样的自定义主题

 <style name="AppTheme" parent="Theme.Base.AppCompat">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabView</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabView</item>
</style>

而且,像这样自定义ActionBarTab 主题

<style name="MyActionBarTabView" parent="Widget.AppCompat.Base.ActionBar.TabView">
    <item name="android:background">@drawable/action_bar_stacked_background</item>
</style>

将AppTheme 设置为整个Application 主题或Activity。让我知道它是如何工作的。

【讨论】:

    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2017-07-09
    • 2017-03-28
    • 2011-06-07
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多