自定义三角形按钮中的边界
Bounds in custom triangle button
我创建了一个自定义按钮,如图所示。
我的问题是边界仍然可以点击。
有没有办法把三角形包起来
我的形状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>
我也尝试了 canvas 方法并遇到了同样的问题。
抱歉我迟到的回复。我不知道你已经找到了解决方案。
因为 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>
现在你的黑色三角形与上边缘没有距离了。但它并没有真正包裹三角形。如果你想包裹三角形,有一些解决方案(这并不容易):
You can override the OnTouch Event method in a CustomView / CustomButton.
Inside you have the MotionEvent were you can check if the Touch was inside your Triangle (with the help of some mathematics :P)
或者您也可以这样做:
Android Custom Shape Button
我创建了一个自定义按钮,如图所示。 我的问题是边界仍然可以点击。 有没有办法把三角形包起来
我的形状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>
我也尝试了 canvas 方法并遇到了同样的问题。
抱歉我迟到的回复。我不知道你已经找到了解决方案。
因为 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>
现在你的黑色三角形与上边缘没有距离了。但它并没有真正包裹三角形。如果你想包裹三角形,有一些解决方案(这并不容易):
You can override the OnTouch Event method in a CustomView / CustomButton.
Inside you have the MotionEvent were you can check if the Touch was inside your Triangle (with the help of some mathematics :P)
或者您也可以这样做:
Android Custom Shape Button