以编程方式设置单选按钮上的按钮色调

Posted

技术标签:

【中文标题】以编程方式设置单选按钮上的按钮色调【英文标题】:Setting button tint on radio button programmatically 【发布时间】:2018-04-24 12:18:31 【问题描述】:

我想以编程方式设置单选按钮色调。在 xml 中有一个名为“buttonTint”的属性来完成这项工作。但是在程序中我找不到任何方法来为单选按钮设置色调或颜色。有什么方法或方法可以做到吗?

 <RadioButton
    android:buttonTint="@color/colorPrimaryDark"
    android:layout_
    android:layout_
    android:text="Payeer" />

【问题讨论】:

【参考方案1】:

您可以使用setButtonTintList (ColorStateList tint)

对可绘制的按钮应用颜色。不修改当前的着色模式,默认为SRC_IN。

setButtonDrawable(Drawable) 的后续调用将自动改变drawable 并使用setTintList(ColorStateList) 应用指定的色调和色调模式。

示例代码

public class MainActivity extends AppCompatActivity 

    RadioButton radioButton;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        radioButton = findViewById(R.id.radioButton);

        ColorStateList myColorStateList = new ColorStateList(
                new int[][]
                        new int[]getResources().getColor(R.color.colorPrimaryDark)
                ,
                new int[]getResources().getColor(R.color.colorAccent)
        );

        radioButton.setButtonTintList(myColorStateList);

    



【讨论】:

谢谢兄弟。这是工作。但它需要最低限度的 API(棒棒糖)。运行的手机版本低于LOLLIPOP会不会死机? @SorwarHossainMostafa is it going to crash if the version of the running phone lower than LOLLIPOP 答案是 NO【参考方案2】:

基于之前的两个答案,设置背景颜色的一行代码是

Java 代码

button.setButtonTintList(ColorStateList.valueOf(getColor(R.color.red)));

Kotlin 代码

button.buttonTintList=ColorStateList.valueOf(getColor(R.color.red))

【讨论】:

【参考方案3】:

使用下面的代码:

button.setBackgroundTintList(ColorStateList.valueOf(resources.getColor(R.id.red)));

【讨论】:

以上是关于以编程方式设置单选按钮上的按钮色调的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改表格单元格中单选按钮组的单选按钮?

Dojo RadioButton,以编程方式设置组

是否可以以编程方式隐藏单选按钮列表的特定列表项?

如果它们适合单行,如何以不同的方式设置单选按钮?

如何以编程方式重置或取消选中 Angular 中的单选按钮?

如何以编程方式检查带有涟漪动画的Android单选按钮?