Android中复杂的自定义按钮状态

Android中复杂的自定义按钮状态,android,android-layout,button,Android,Android Layout,Button,在我当前的项目中,我正在使用API 10构建一个应用程序,它看起来应该像一个ICS应用程序。 因为我的GUI不是很复杂,所以我可以全部手动构建,但是我在按钮状态方面有一些问题 我在谷歌上搜索了很多,没有发现任何对我有用的东西,所以我非常感谢任何帮助;) 我设计了一个带有谷歌ICS股票图标的操作栏。例如,当有人触摸带有8dp填充的搜索放大镜图标时,其背景色应更改为定义的高光颜色值 因此,现在您可能会建议使用选择器可拖动。但我的情况是:我有一个图标可绘制,它有一个背景色,我想改变它。我不想更改图标,

在我当前的项目中,我正在使用API 10构建一个应用程序,它看起来应该像一个ICS应用程序。 因为我的GUI不是很复杂,所以我可以全部手动构建,但是我在按钮状态方面有一些问题

我在谷歌上搜索了很多,没有发现任何对我有用的东西,所以我非常感谢任何帮助;)

我设计了一个带有谷歌ICS股票图标的操作栏。例如,当有人触摸带有8dp填充的搜索放大镜图标时,其背景色应更改为定义的高光颜色值

因此,现在您可能会建议使用选择器可拖动。但我的情况是:我有一个图标可绘制,它有一个背景色,我想改变它。我不想更改图标,因为我无法从选择器xml更改背景颜色,所以这不起作用。 (我想我可以用我的图标静态bg颜色设置多个可绘制xml,这样我就可以用一个选择器引用这些不同颜色的图标,但由于形状可绘制xml不能有源,位图可绘制xml不能有背景色,所以这不是解决方案。)

如果我尝试在onclick listener(也尝试了onTouch)中更改背景颜色,请执行以下操作:

图标为深灰色背景色。这也适用于任何其他颜色,尽管ImageButton顶部没有任何内容。我还尝试了ImageView

那么,有人能向我解释一下,我是如何定义一个高亮显示的bg彩色图像的,而不需要任何修改(默认的gone图像位于图标上方,并且在单击时可见)。
非常感谢

好的,解决方法很简单

为自己编写一个可绘制选择器,如下所示:

<?xml version="1.0" encoding="utf-8"?>


在ImageButton代码中,将图标定义为src,将新的drawable定义为背景,如下所示:

<ImageButton
                <!-- ... -->
                android:src="@drawable/icon_search" 
                android:background="@drawable/actionbar_ontouch"

                />

你试过了吗?谢谢,但我已经准备好了整个设计,它看起来很棒,我不想为了那些愚蠢的亮点而重做每一件事。
<item android:state_selected="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/android_ics_blue_light"/>
    </shape>
</item>


<item android:state_pressed="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/android_ics_blue_light"/>
    </shape>
</item>

 <item>
    <shape android:shape="rectangle">
        <solid android:color="@color/light_grey"/>
    </shape>
</item>
<ImageButton
                <!-- ... -->
                android:src="@drawable/icon_search" 
                android:background="@drawable/actionbar_ontouch"

                />