2

通常と押された状態の 2 つの状態で、イメージを含む ImageButton を作成します。状態は同じ画像を使用していますが、押した状態ではより薄くなります。2つの画像なしで、XMLのみで行うことは可能ですか?

4

4 に答える 4

2

私は満足している解決策を見つけました:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/my_image" android:state_pressed="false"/>
    <item android:drawable="@drawable/my_image_pressed" android:state_pressed="true"/>
</selector>

ボタンの背景に、このドローアブルを配置します。my_imageリソースからの画像とmy_image_pressed次のドローアブル:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap android:src="@drawable/my_image" />
    </item>
    <item>
        <color android:color="#5FEC" />
    </item>
</layer-list>
于 2012-08-02T16:12:19.310 に答える
1

しかし、なぜ2つの異なる画像を使用したくないのですか?

于 2012-07-12T12:37:48.953 に答える
1

状態が押されたときに、onDraw で ImageButton のイメージに ColorFilter を適用できます。押されていないときはクリアします。

filter = new PorterDuffColorFilter(0x7FFFFFFF, PorterDuff.Mode.SRC_ATOP);

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    if (isPressed())
    {
        getDrawable().setColorFilter(filter);
    }
    else
    {
        getDrawable().clearColorFilter();
    }
}
于 2012-07-12T15:25:53.347 に答える
1

これを行います:selector.xmlという名前のドローアブルフォルダーにxmlファイルを作成します

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/lighter_image"
          android:state_pressed="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/original_image"/>

 </selector> 

imageButton で、この xml として背景を設定します。

android:background="@drawable/selector"
于 2012-07-12T12:46:39.660 に答える