首页 > 解决方案 > 如何在运行时更改按钮形状样式?

问题描述

我正在用java,android studio开发一个应用程序,用户可以在其中选择应用程序的样式颜色。

对于大多数组件,只需使用.setBackground(colorUser);

问题出在我的按钮上。

我的按钮都是圆形的,我为此创建了一个形状。

我的形状在其他文件中...

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">

    <solid android:color="@color/colorJetway" />

    <corners
        android:bottomLeftRadius="80dp"
        android:bottomRightRadius="80dp"
        android:topLeftRadius="80dp"
        android:topRightRadius="80dp" />

</shape>

<Button
            android:id="@+id/btnAdc"
            android:layout_width="84dp"
            android:layout_height="84dp"
            android:layout_marginTop="12dp"

            android:layout_marginEnd="205dp"
            android:background="@drawable/btns_border"
            android:onClick="btnAdicionar_click"
            android:text="+"
            android:textColor="#FFFFFF"
            android:textSize="40dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/txtQuantidade" />

这样,如果在运行时我让mybutton.setBackground(colorUser)我的按钮失去了它的风格......它将没有圆形边缘。

我该怎么做?

标签: androidmaterial-designandroid-buttonmaterial-components-androidmaterial-components

解决方案


这不完全是您正在寻找的东西。
然而,使用该MaterialButton组件,拥有圆形按钮非常简单。

只需用于app:cornerRadius定义圆角半径并app:backgroundTint更改背景颜色。

<com.google.android.material.button.MaterialButton
    app:backgroundTint="@color/myselector"
    app:cornerRadius="xxdp"
    .../>

您可以使用以下方式以编程方式更改这些值:

button.setCornerRadius(...);
button.setBackgroundTintList(..);

推荐阅读