Android 開発者の皆様、こんにちは。
私の UI デザイナーは複雑な形状のボタンを望んでいますが、その方法がわかりません。助けてください。
これは彼女が望んでいるデザインの画像です
これを行うには多くの方法がありますが、おそらく最も簡単なのは、必要な状態 (通常、押された、無効など) に従う各ボタンの 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"/>
これに関する主な問題は、タッチに反応する長方形の領域が得られることです。画像のようにボタンを整理すると、1 つをクリックすると実際には別のボタンが選択される可能性があります。
この問題は、Button クラスの onTouchEvent をオーバーライドすることで解決でき (つまり、拡張する必要があります)、配置したい領域にない場合は false を返すことができます。
全体として、これを行うための最良の (そして最も完全な) 方法は、onMeasure、onDraw などのメソッドを使用して View クラスを拡張し、必要なことを正確に実行することです。ただし、Android を初めて使用する場合やこれまでにこれを行ったことがない場合は、上記の内容を最初に試すことをお勧めします。