如何在 Android 3.0 及更高版本中更改 ActionBar 的触摸效果颜色

Posted

技术标签:

【中文标题】如何在 Android 3.0 及更高版本中更改 ActionBar 的触摸效果颜色【英文标题】:How can I change the touch effect color of the ActionBar in Android 3.0 and higher 【发布时间】:2012-02-19 15:05:19 【问题描述】:

当您触摸 ActionBar 项目时,我正在尝试更改翻转效果的颜色。 在我的 Galaxy Nexus 4.0.2 上,它是一种绿松石色阴影,我想使用不同的颜色。

为了清楚起见,我在这里谈论的是 ActionBar 项,而不是导航选项卡。

我让它在兼容性库下工作,但对于 android 3.0 及更高版本,即“真正的”ActionBar,我就是不知道如何做到这一点。

有谁知道这是否以及如何实现?

【问题讨论】:

【参考方案1】:

本机操作栏使用主题属性selectableItemBackground 进行操作项背景绘制。这应该是一个可绘制的状态列表。

这是Theme.Holo中的声明:

<style name="Theme.Holo">
    <!-- bunch of things -->
    <item name="android:selectableItemBackground">@android:drawable/item_background_holo_dark</item>
    <!-- bunch of things -->
</style>

及其可绘制的 XML:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:exitFadeDuration="@android:integer/config_mediumAnimTime">

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" />
    <item android:state_focused="true"  android:state_enabled="false"                              android:drawable="@drawable/list_selector_disabled_holo_dark" />
    <item android:state_focused="true"                                android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
    <item android:state_focused="false"                               android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" />
    <item android:state_focused="true"                                                             android:drawable="@drawable/list_focused_holo" />
    <item                                                                                          android:drawable="@color/transparent" />
</selector>

【讨论】:

感谢您的快速回复。但是,如果我尝试用 我收到一个错误:找不到与给定名称匹配的资源:attr 'selectableItemBackground'。如何或在哪里可以覆盖此属性? 抱歉,您必须使用name="android:selectableItemBackground"。它没有在主题的 Android 平台版本中指定,因为它的默认包已经是 'android'。我更新了答案。

以上是关于如何在 Android 3.0 及更高版本中更改 ActionBar 的触摸效果颜色的主要内容,如果未能解决你的问题,请参考以下文章

Android:BitmapFactory.nativeDecodeAsset 处的 OutOfMemoryError(Honeycomb 3.0 及更高版本)

错误:Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.0 及更高版本

处理新版本 Android(3.x 及更高版本)中缺少的 MENU 按钮

在 Symfony 2.8、3.0 及更高版本中将数据传递给 buildForm()

如何在 android 2.3 及更高版本中获取当前启动器的包名?

颤振| Android Gradle插件仅支持Kotlin Gradle插件版本1.3.0及更高版本