通常と押された状態の 2 つの状態で、イメージを含む ImageButton を作成します。状態は同じ画像を使用していますが、押した状態ではより薄くなります。2つの画像なしで、XMLのみで行うことは可能ですか?
質問する
1547 次
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 に答える