0

你好安卓开发者,

我的 UI 设计师想要一个复杂的形状按钮,但我不知道怎么做,请帮助我。

这是她想要的设计图片

4

1 回答 1

0

有很多方法可以做到这一点,最简单的可能是为每个按钮创建一个 xml 选择器,该选择器将遵守您想要的状态(正常、按下、禁用等)。例如:

创建可绘制的 hex_button_one.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Pressed -->
    <item android:state_pressed="true" >
       <bitmap android:antialias="true" 
               android:dither="true" 
               android:src="@drawable/myButtonPressed" />
    </item>

    <!-- normal -->
    <item>
        <bitmap android:antialias="true" 
               android:dither="true" 
               android:src="@drawable/myButtonNormal" />
    </item>
</selector>

然后使用您的布局 xml 文件,您可以设置按钮的背景

 <Button android:id="@+id/hexButtonOne"
        android:layout_height="26dp"
        android:layout_width="26dp"
        android:layout_centerHorizontal="true"
        android:background="@drawable/hex_button_one"/>

这样做的主要问题是您将获得一个响应您触摸的矩形区域,如果您按照图像中的方式组织按钮,那么单击一个实际上可能会选择另一个。

您可以通过覆盖 Button 类的 onTouchEvent 来解决此问题(这意味着您必须扩展它),如果它不在您希望它所在的区域中,则返回 false。

总的来说,最好的——也是最完整的——方法是使用 onMeasure、onDraw 等方法扩展 View 类,以准确执行您想要的操作。但是,如果您是 Android 新手或者之前没有这样做过,我建议您先尝试我上面所说的内容。

于 2013-11-05T23:35:02.227 回答