2012-04-09 15 views
1

私の現在のプロジェクト私はICS Appのように見えるはずのAPI 10でアプリケーションを構築しています。 私のGUIはあまり複雑ではないので、私はこのすべてを手動で構築することができますが、ボタンの状態に関するいくつかの問題があります。Androidの複雑なカスタムボタンの状態

私は多くのことをGoogleで検索し、私は任意の助けをいただければ幸い私のために働くだろう、何も見つからなかった;)

私はGoogleのICSストックアイコンでアクションバーを設計しました。例えば、誰かが8dpのパディングを持つsearch-loupe-iconに触れると、背景色が定義されたハイライトカラー値に変わるはずです。

だから、おそらくセレクタdrawableを提案するでしょう。しかし、私の場合は:私はアイコン描画可能背景色を持っている、私は変更をしたいです。アイコンを変更したくないので、selector-xmlから背景色を変更できないので、これは機能しません。 (私は複数のdrawable-xmlを自分のアイコンの静的なbg色でセットアップできると思ったので、セレクタを異なる色のアイコンにすることができましたが、shape-drawable-xmlにはソースとビットマップ描画可能なxml 。

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

アイコンは濃い灰色のBGを取得します:背景色を持つことができない、これは何のsollutionではありません)

私は私のonclickリスナーで背景色を変更しようとした場合(これもと)onTouchを試してみました色。これはImageButtonの上に何も置かれていない他の色でも当てはまります。私もImageViewを試しました。

誰かが私の喜びを説明することができました。どのようにして、ハッキングなしで強調表示されたbgカラーイメージを定義することができましたか?(アイコンの上にあり、表示可能なonclickに設定されています。 ありがとうございました!

+0

あなたは[actionbarsherlock](http://actionbarsherlock.com/)を試しましたか? – Renard

+0

これはありがたいことですが、私はすべてのことを偉大に見えるように設計しました。私はそれらの愚かなハイライトのためにeverythinkをやり直したくありません。 – ruffy

答えて

2

解決策は簡単です。

は、自分のようになります描画可能なセレクタを書く:あなたのImageButtonコード内

<?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> 

はこのように、srcおよび背景として、新しい描画可能としてあなたのアイコンを定義します:

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

       /> 

魅力的な作品です!

関連する問題