小编典典

自定义圆形按钮

all

我想创建自定义按钮,我需要它是圆形的。如何创建圆形按钮?我认为draw9patch不可能。

我也不知道如何制作自定义按钮!

你有什么建议吗?


阅读 61

收藏
2022-06-22

共1个答案

小编典典

像这样使用 xml 可绘制对象:

将以下内容另存为round_button.xml文件drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="oval">
            <solid android:color="#fa09ad"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="#c20586"/>
        </shape>
    </item>
</selector>

Android 材质效果:
虽然FloatingActionButton是一个更好的选择,但如果您想使用
xml 选择器,请drawable-v21在其中创建一个文件夹并使用以下 xmlres保存另一个文件夹round_button.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#c20586">
    <item>
        <shape android:shape="oval">
            <solid android:color="#fa09ad"/>
        </shape>
    </item>
</ripple>

Button并将其设置为xml中的背景,如下所示:

<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/round_button"
android:gravity="center_vertical|center_horizontal"
android:text="hello"
android:textColor="#fff" />

重要的:

  1. 如果您希望它显示所有这些状态(启用、禁用、突出显示等),您将使用这里描述的选择器:

继 Tomasz 的回答之后,您还可以使用 PorterDuff 乘法模式以编程方式设置整个按钮的阴影。这将改变按钮颜色而不仅仅是色调。

如果您从标准的灰色阴影按钮开始:

button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);

会给你一个红色阴影按钮,

button.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);

会给你一个绿色阴影按钮等,其中第一个值是十六进制格式的颜色。

它通过将当前按钮颜色值乘以您的颜色值来工作。我相信您还可以使用这些模式做更多的事情。

  1. 您必须保留这两个文件以使可绘制向后兼容。否则,您将在以前的 android 版本中遇到奇怪的异常。
2022-06-22