android - 如何在运行时更改按钮形状样式?
问题描述
我正在用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)
我的按钮失去了它的风格......它将没有圆形边缘。
我该怎么做?
解决方案
这不完全是您正在寻找的东西。
然而,使用该MaterialButton
组件,拥有圆形按钮非常简单。
只需用于app:cornerRadius
定义圆角半径并app:backgroundTint
更改背景颜色。
<com.google.android.material.button.MaterialButton
app:backgroundTint="@color/myselector"
app:cornerRadius="xxdp"
.../>
您可以使用以下方式以编程方式更改这些值:
button.setCornerRadius(...);
button.setBackgroundTintList(..);
推荐阅读
- git - git忽略图像文件不起作用
- asp.net - ASP.NET MVC 网络相关或特定于实例的错误
- c - 在C中更改一个字节的4个中间位
- java - Anko doAsync 调用未执行
- android - 删除应用时读取持久性数据
- php - 如何使用 v1 API 将 FCM 通知发送到特定设备令牌列表
- ios - 在堆栈视图中调整 UIButtons 中的文本大小
- node.js - 在大型 MongoDB 实例中将字符串索引更改为 ObjectID 索引
- android - Openstf安装和stf provider@service
- android - android蓝牙SPP连接在发送所有数据之前终止