2012-04-09 21 views
1

在我当前的项目中我正在构建一个应用程序与API 10应该看起来像一个ICS应用程序。 由于我的GUI不是非常复杂,我可以手动构建这一切,但我在按钮状态方面存在一些问题。复杂的自定义按钮状态Android

我GOOGLE了很多,什么也没发现,将工作的我,所以我希望得到任何帮助;)

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

所以,现在你会建议可能选择drawable。但我的情况是:我有一个图标可绘制它有一个背景色,我想要更改。我不想更改图标,所以,因为我不能更改选择器xml的backgroundcolor这不起作用。 (我以为我可以用我的图标静态bg颜色设置多个drawable-xml,这样我就可以用一个选择器引用那些不同的彩色图标,但由于shape-drawable-xml不能有源代码和位图可绘制-xml 。不能有一个背景颜色,这是没有sollution)

如果我试图改变我的onclick侦听器的背景颜色(也试过onTouch)有:

ImageButton searchIcon = (ImageButton) findViewById(R.id.upper_actionbar_icon_search); 
      searchIcon.setBackgroundColor(R.color.android_ics_blue_light); 

图标得到一个暗灰色BG颜色。对于任何其他颜色,ImageButton顶部也没有任何色彩。我也试过ImageView。

所以可能有人解释给我请了如何(即位于图标上方,并设置明显的onclick默认走了图像)是地狱,我可以定义一个突出BG彩色图像而没有任何黑客。 非常感谢!

+0

你有没有试过[actionbarsherlock](http://actionbarsherlock.com/)? – Renard 2012-04-09 15:08:43

+0

非常感谢,但我已经将整个事物设计得很好看,我不想为那些愚蠢的亮点重做一切。 – ruffy 2012-04-09 15:18:24

回答

2

好的解决方案很简单。

写自己绘制的选择,看起来像这样:

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

<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代码定义图标,src和你的新绘制的背景下,这样的:

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

       /> 

工程就像一个魅力!