如何创建一个按钮的自定义形状,但保持可点击和可聚焦

我想制作一个自定义形状的按钮,但是当我尝试更改形状时,却无法点击/调整焦点,我该怎么做?

你可以通过两种方式做到这一点,

  1. 设置任何形状可绘制的布局/按钮,并在XML中添加android:foreground="?attr/selectableItemBackground"

  2. 在按钮中设置样式属性。 style="@style/buttonTheme" in XML and define <style name="buttonTheme" parent="Widget.AppCompat.Button.Colored"> <item name="colorButtonNormal">@color/#000000</item> / style文件夹。

我希望这是你正在寻找的,但我已经做了几次,我喜欢一个更多的圆形按钮,或者如果它是一个小部件,我想要一个复选框。 这里有几个例子,我只是改变了android: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> 

所以,总之,我认为最简单的方法就是做一个按钮布局,但是使用background属性来改变按钮的外观。