【发布时间】:2021-11-13 14:12:51
【问题描述】:
我有一些意见..我希望如果一个项目被选中,另一个应该自动取消选中。而当(如图所示)时,如果假设此处文本为 100 的第二个项目被选中,则第一个选项应该被取消选中。如何保留所选项目的参考并取消选择其他项目?我在某处了解到单选按钮用于这些..但有人怎么能显示这个?
【问题讨论】:
标签: android android-layout radio-button
我有一些意见..我希望如果一个项目被选中,另一个应该自动取消选中。而当(如图所示)时,如果假设此处文本为 100 的第二个项目被选中,则第一个选项应该被取消选中。如何保留所选项目的参考并取消选择其他项目?我在某处了解到单选按钮用于这些..但有人怎么能显示这个?
【问题讨论】:
标签: android android-layout radio-button
每当您调用“选择”方法时,在代码中它应该首先清除您之前存在的所有选择。您可以通过检查每个符合条件的选择的属性/状态然后反转您为选择它所做的操作来做到这一点。您还可以保留对当前选择的引用作为一种 hack,并在进行新选择时不断更新并使用它来取消选择。
【讨论】:
假设您的意思是通过“选择”更改背景等,您可以遍历父 ViewGroup(例如 ConstraintLayout、LinearLayout 等)并选择您的目标视图并取消选择其余视图,如下面的代码。
void toggleView(View view, boolean selected) {
if (selected) {
view.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getContext(), R.color.bg_grey_2)));
} else {
view.setBackgroundTintList(null);
}
}
void selectOneViewAndUnselectOthers(ViewGroup parentView, View viewToSelect) {
for (int i = 0; i < parentView.getChildCount(); i++) {
View tmpView = parentView.getChildAt(i);
if (tmpView.getId() == viewToSelect.getId()) {
toggleView(viewToSelect, true);
} else {
toggleView(tmpView, false);
}
}
}
【讨论】: