0

如图所示,我创建了一个自定义按钮。我的问题是边界仍然可以点击。有什么方法可以包裹三角形。

图片自定义按钮

我的形状 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <rotate
        android:fromDegrees="45"
        android:toDegrees="45"
        android:pivotX="-10%"
        android:pivotY="87%" >
        <shape
            android:shape="rectangle" >
            <stroke  android:color="@color/transparent" android:width="30dp"/>
            <solid 
             android:color="@android:color/black" />

        </shape>
    </rotate>
</item>
</layer-list>

按钮:

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:weightSum="1">

    <Button
        android:layout_width="114dp"
        android:layout_height="match_parent"
        android:background="@drawable/triangle"
        android:id="@+id/button"/>

    </LinearLayout>

我也尝试了画布方法并遇到了同样的问题。

4

1 回答 1

0

回复晚了,请原谅。我不知道您是否找到了解决方案。因为android:pivotX="-10%",您的黑色三角形与顶部边缘有距离。

您可以像这样删除android:pivotX, android: pivotY并添加android:layout_marginBottom="-50dp"按钮:

<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:weightSum="1"
android:layout_marginBottom="-50dp"
>

<Button
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="@drawable/triangle"
    android:id="@+id/button"
    />
</LinearLayout>

现在你的黑色三角形与顶部边缘没有距离。但它并没有真正包裹三角形。如果你想包裹三角形,有一些解决方案(这并不容易):

您可以在 CustomView / CustomButton 中覆盖 OnTouch 事件方法。

在里面你有 MotionEvent 你可以检查触摸是否在你的三角形内(借助一些数学:P)

或者你也可以这样做:

Android 自定义形状按钮

于 2016-03-10T18:09:13.753 回答