1

現在のプロジェクトでは、ICSアプリのように見えるAPI10を使用してアプリを構築しています。私のGUIはそれほど複雑ではないので、これをすべて手動で作成できますが、ボタンの状態に問題があります。

私はたくさんグーグルで検索しましたが、私にとってうまくいくものは何も見つかりませんでしたので、助けていただければ幸いです;)

グーグルICSストックアイコンでアクションバーをデザインしました。たとえば、誰かが8dpのパディングがあるsearch-loupe-iconに触れると、背景色が定義されたhighlight-color-valueに変わるはずです。

だから今、あなたはおそらくセレクタードローアブルを提案するでしょう。しかし、私の場合は次のとおりです。変更したい背景色を持つアイコン描画可能オブジェクトがあります。アイコンを変更したくないので、selector-xmlからbackgroundcolorを変更できないため、これは機能しません。(アイコンの静的なbg色を使用して複数のdrawable-xmlを設定できると思ったので、1つのセレクターでそれらの異なる色のアイコンを参照できますが、shape-drawable-xmlにはソースを含めることができず、bitmap-drawable-xmlにはできません。背景色があります。これは解決策ではありません。)

onclick-listener(onTouchも試してみました)の背景色を次のように変更しようとすると、次のようになります。

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

アイコンは濃い灰色のbg色になります。これは他の色にも当てはまりますが、ImageButtonの上には何もありません。ImageViewも試してみました。

だから誰かが私にハックなしでハイライトされたbgカラー画像を定義する方法を説明してもらえますか(アイコンの上にあり、クリックすると表示されるように設定されているデフォルトの画像)。本当にありがとう!!

4

1 に答える 1

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"

                />

魔法のように動作します!

于 2012-04-28T09:56:04.230 に答える