我的问题如下:
我有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 的样子(聚焦状态):
这个背景的大小给我带来了一些麻烦。绘制星形图标时,会考虑背景来计算星形图标的面积。因此,当我对齐两个或多个与此相似的图标时,它们彼此之间的距离很远。
<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" />
我的解决方案是设置左边的负边距,所以它们被关闭在一起。
然而,这个解决方案引起了另一个问题。现在项目重叠:
现在,例如,当我尝试单击项目共享(中间的按钮)时,实际上是第三个被单击的按钮,因为它们是重叠的。
ImageView
我理想的解决方案是不考虑应用到 an 的背景来计算它应用到的项目的面积。像这样的东西:
换句话说,背景可能会超出ImageView
.
我认为这可以解决问题,但我一直在阅读文档,但找不到与此相关的任何内容。任何其他想法将不胜感激(尽管不可能改变 bakground 的大小)。
谢谢你的帮助。