アイコンのサンプルを使ってボタンのデザインをしていますが、アイコンを押さないときは黒、押すと白になるようにしたいと思っています。次のようにコーディングします。
レイアウトxmlで:
<Button
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/icon_new_btn"
android:scaleType="fitXY"
android:id="@+id/newBtn" />
icon_new_btn.xml で:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:drawableTop="@drawable/icon_new_white"
android:background="@android:color/transparent"/>>
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:drawableTop="@drawable/icon_new"
android:background="@android:color/transparent"/>
</shape>
</item>
</selector>
質問1(以下の変更を使用して解決されるようです):
ボタン全体が画面上で見えなくなります (その画面の場所ではまだ押すことができます!)。定義された目的を満たすために、上記のコーディングをどのように変更できますか? ありがとう!!
変更されたが新しい質問 (Question2):
次の変更されたレイアウトとセレクターは、上記の質問 1 を解決しているように見えます。しかし、解像度が大幅に低下し、アイコンが歪んで大きく見えます。以下の変更されたコードを使用した 1 番目と 2 番目のアイコンについては、以下のスクリーンショットを参照してください (アイコン 3 から 6 はandroid:drawableTop="@drawable/icon_save"
、プレス効果なしで単純に使用され、より高い解像度を示しています)。
変更されたレイアウト
<Button
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/icon_new_btn"
android:scaleType="fitXY"
android:id="@+id/newBtn" />
変更されたセレクター:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_new_white"
android:state_pressed="true" />
<item android:drawable="@drawable/icon_new" />
</selector>