【问题标题】:How to change a button shape style at runtime?如何在运行时更改按钮形状样式?
【发布时间】:2019-09-03 18:47:52
【问题描述】:

我正在用java开发一个app,android studio,用户可以选择app的样式颜色。

对于大多数组件,只需使用 .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) 我的按钮失去了它的风格......它将没有圆边。

我该怎么做?

【问题讨论】:

    标签: android material-design android-button material-components-android material-components


    【解决方案1】:

    这不是您要找的。
    然而,使用MaterialButton 组件,圆形按钮非常简单。

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

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

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

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

    【讨论】:

      【解决方案2】:

      如果您的颜色有限,您可以使用您想要的颜色创建一些可绘制对象。

      例如:

      blackButton.xml:

      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:padding="10dp"
      android:shape="rectangle">
      
      <solid android:color="@color/black" />
      
      <corners
          android:bottomLeftRadius="80dp"
          android:bottomRightRadius="80dp"
          android:topLeftRadius="80dp"
          android:topRightRadius="80dp" />
      

      whiteButton.xml:

      <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:padding="10dp"
      android:shape="rectangle">
      
      <solid android:color="@color/white" />
      
      <corners
          android:bottomLeftRadius="80dp"
          android:bottomRightRadius="80dp"
          android:topLeftRadius="80dp"
          android:topRightRadius="80dp" />
      

      当您想更改按钮的背景时,只需使用 button.setBackground(getResources().getDrawable(R.drawable.blackButton))button.setBackground(getResources().getDrawable(R.drawable.whiteButton))

      【讨论】:

        猜你喜欢
        • 2021-08-09
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        相关资源
        最近更新 更多