gpt4 book ai didi

java - 如何在 Android Studio 运行时更改小部件的样式

转载 作者:行者123 更新时间:2023-12-01 23:36:42 25 4
gpt4 key购买 nike

我正在开发一个项目,需要在运行时动态更改复选框的样式,我已经浏览了视线上列出的许多其他选项,但是,大多数选项都需要创建一个新的对象实例,而这不是就我而言,任何对这个困境的洞察都会很棒!

最佳答案

如果您在运行时有复选框对象,则可以动态编辑它。例如,您可以使用

检查它

myCheckBox.setChecked(true);

如果您处于相同的上下文中,您可以像这样更改颜色:

for android<23

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));

for android>=23

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
myCheckBox.setForegroundTintList(new ColorStateList(states,colors)); // <-- requires @TargetApi(23)
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));

您也可以像这样编辑其他样式属性。我不知道您是否需要自己设置所有属性,或者您是否可以将新样式应用为简单的单行代码...

更新:

像这样实现它:进入/res/values/文件夹并在colors.xml中添加两种新颜色myCheckedCheckboxColormyUncheckedCheckboxColor(或在运行时编程一个新的颜色元素)

public class MainActivity extends AppCompatActivity ... {

Context ctx = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ctx = MainActivity.this;

...
}

protected void changeColorOfCheckBox(CheckBox myCheckBox){
int osVersion = Build.VERSION.SDK_INT;
if(osVersion>=23){
changeColorOfCheckBox23(myCheckBox);
}
else{
int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));
}
}

@TargetApi(23)
protected void changeColorOfCheckBox23(CheckBox myCheckBox){
int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
myCheckBox.setForegroundTintList(new ColorStateList(states,colors)); // <-- requires @TargetApi(23)
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));
}

}

关于java - 如何在 Android Studio 运行时更改小部件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58275823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com