私の問題は次のとおりです。
私はImageView
背景を持つを持っています。背景は、状態に応じて異なる画像を描画するドローアブルです。
context_menu_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused -->
<item android:drawable="@drawable/button_round_focused"
android:state_focused="true"/>
<!-- Pressed -->
<item android:drawable="@drawable/button_round_focused"
android:state_pressed="true"/>
<!-- Normal -->
<item android:drawable="@android:color/transparent"/>
</selector>
次にstar icon
、これcontext_menu_button
を背景として適用します。
<ImageView
android:id="@+id/btnStar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/context_menu_button"
android:focusable="true"
android:src="@drawable/icon_star" />
この画像button_round_focused
は非常に微妙なグラデーションを持つ画像であるため、実際には非常に大きくなっています。通常の状態では画像(透明色)はありません。上記の XML は次のようになります (フォーカスされた状態)。
この背景のサイズが問題を引き起こしています。星のアイコンをペイントするとき、アイコンの星の面積を計算するために背景が考慮されます。そのため、このアイコンに似たアイコンを 2 つ以上並べると、互いに非常に離れてしまいます。
<ImageView
android:id="@+id/btnStar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/context_menu_button"
android:focusable="true"
android:src="@drawable/icon_star" />
<ImageView
android:id="@+id/btnShare"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/context_menu_button"
android:focusable="true"
android:src="@drawable/icon_share" />
<ImageView
android:id="@+id/btnRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/context_menu_button"
android:focusable="true"
android:src="@drawable/icon_rate" />
私の解決策は、左の負のマージンを設定することでした。
ただし、このソリューションは別の問題を引き起こしました。アイテムが重なっています。
たとえば、アイテムの共有 (中央のボタン) をクリックしようとすると、実際には 3 番目のボタンがクリックされます。
私の理想的な解決策は、適用されたアイテムの面積を計算するために、適用された背景ImageView
が考慮されていないことです。このようなもの:
つまり、背景が の領域からはみ出す可能性がありImageView
ます。
これで問題は解決すると思いますが、ドキュメントを読んでいますが、これに関連するものは何も見つかりませんでした。他のアイデアをいただければ幸いです (ただし、背景のサイズを変更することはできません)。
ご協力いただきありがとうございます。