Android全形按钮

| 我试图更改某些Android组件(例如Button或View)的形状。我所能做的就是使用onDraw-Method为背景分配形状。好吧,它看起来像经过重塑,但是触摸事件仍然可以在我定义的形状之外进行。有什么可行的方法可以排除形状之外的触摸?当然,我可以检查鼠标事件的每个位置,但是对于更复杂的形状,我不知道如何检查点是否在形状内。 感谢您的回复。 西蒙     
已邀请:
您可以在xml中定义形状(如此处所示)。 例如: drawable / sample_shape.xml:
<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"
    android:shape=\"rectangle\">
    <gradient
        android:startColor=\"#FFFF0000\"
        android:endColor=\"#80FF00FF\"
        android:angle=\"45\"/>
    <padding android:left=\"7dp\"
        android:top=\"7dp\"
        android:right=\"7dp\"
        android:bottom=\"7dp\" />
    <corners android:radius=\"8dp\" />
</shape>
然后,您可以将xml描述用作ImageButton的可绘制对象。 drawable / samplebutton.xml:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">
    <item android:state_pressed=\"true\"
        android:drawable=\"@drawable/sample_shape\" /> <!-- pressed -->
    <item android:state_focused=\"true\"
       android:drawable=\"@drawable/sample_shape\" /> <!-- focused -->
    <item android:drawable=\"@drawable/sample_shape\" /> <!-- default -->
</selector>
在您的布局文件中:
<ImageButton 
    android:layout_height=\"wrap_content\" 
    android:layout_width=\"wrap_content\" 
    android:background=\"@drawable/samplebutton\">
</ImageButton>
    

要回复问题请先登录注册