我有一些区域的图像。我想对特定区域的点击做出反应,但我无法将此图像剪切成单独的图像。你可以看下面的例子。
黑圈是我的领域。红色矩形是我的透明按钮。你会如何在XML中实现它?我想确保活动按钮始终覆盖背景图像中的相同区域。
我尝试使用FrameLayout执行此操作:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:src="@drawable/_podklad" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:layout_gravity="right|bottom"
android:contentDescription="prawy_tyl"
android:layout_marginRight="45dp"
android:layout_marginBottom="40dp"
android:layout_width="65dp"
android:layout_height="75dp"
android:background="@null"
android:src="@null"/>
<ImageButton
android:contentDescription="lewe_kolo_przod"
android:layout_marginLeft="30dp"
android:layout_marginTop="38dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@null"
android:src="@null"/>
<ImageButton
android:layout_gravity="bottom"
android:contentDescription="lewe_kolo_tyl"
android:layout_marginLeft="28dp"
android:layout_marginBottom="75dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@null"
android:src="@null"/>
<ImageButton
android:layout_gravity="right"
android:contentDescription="prawe_kolo_przod"
android:layout_marginRight="28dp"
android:layout_marginTop="40dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@null"
android:src="@null"/>
<ImageButton
android:layout_gravity="right|bottom"
android:contentDescription="prawe_kolo_tyl"
android:layout_marginRight="25dp"
android:layout_marginBottom="75dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@null"
android:src="@null"/>
</RelativeLayout></FrameLayout>
正如您所看到的,我尝试为按钮指定固定的宽度,高度和边距,但在Android工作室中,它在Nexus 4预览中运行良好,但在像Nexus 9这样的大屏幕上按钮放错了位置。
我等你的想法。
问候。
答案 0 :(得分:3)
因为你知道你的图像并且你知道这个图像中的区域在哪里像素我不建议使用透明按钮
您可以使用(onTouchListener
)来表示此图像,并且对此触摸的响应首先对此图像执行View.measure
,然后根据(x,y)轴进行映射
答案 1 :(得分:0)
在图像中添加圆圈,并更改padding = 10dp或padding 20dp的属性。 或填充左侧或填充 - 右侧