Как создать пользовательскую форму кнопки, но сохранить ее кликабельную и настраиваемую

Я хочу сделать кнопку, чтобы иметь пользовательскую форму, но когда я попробовал изменить форму, но она не была интерактивной / интерактивной, как мне это сделать?

Надеюсь, это то, что вы ищете, но я сделал это несколько раз, когда мне понравилась закругленная кнопка немного больше, или если это виджет, мне нужен флажок. Вот несколько примеров, которые я только что сделал, просто изменив андроид: background:

<Button android:id="@+id/widget_yes_no_checkbox_off" android:layout_width="@dimen/checkbox_size" android:layout_height="@dimen/checkbox_size" android:layout_marginEnd="@dimen/right_margin" android:layout_gravity="center" android:background="@android:drawable/checkbox_off_background" /> 

Это дало мне кнопку, которая выглядит как флажок (необходимый для создания флажка в виджетах).

Или, вот выталкиваемый xml, чтобы помочь мне нажимать кнопку

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="@color/primaryDarkColor"/> <corners android:radius="20dp"/> </shape> 

с соответствующей тематикой темы:

  <style name="myAppStyle.ButtonStyle"> <item name="android:background">@drawable/rounded_button</item> </style> 

Итак, в целом, я думаю, что самый простой способ сделать это – это сделать макет кнопки, но использовать фоновый атрибут, чтобы изменить способ отображения вашей кнопки.

Вы можете сделать это двумя способами:

  1. Установите любую макет / кнопку с возможностью рисования и добавьте android:foreground="?attr/selectableItemBackground" в XML

  2. Установите атрибут Style в кнопке. style="@style/buttonTheme" в своем XML и определить <style name="buttonTheme" parent="Widget.AppCompat.Button.Colored"> <item name="colorButtonNormal">@color/#000000</item> в / style.