对于我的特定应用程序,我希望能够通过触摸单选按钮来打开和关闭它,类似于复选框。但是,我需要单选按钮在它们的组中互斥。有64个按钮和8个组,所以我不想使用复选框并手动设置切换功能。我可以将onTouchListener()
与单选按钮一起使用吗?有什么办法可以做到这一点?
预先感谢您的支持。
最佳答案
您正在寻找既不是复选框也不是单选按钮的UI范式。最好的选择是使用复选框,然后在此之上实现互斥。例如。,
myCheckbox1.setOnCheckChangedListener(new OnCheckChangedListener() {
@Override
public void onCheckChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
myCheckbox2.setChecked(false);
myCheckbox3.setChecked(false);
myCheckbox4.setChecked(false);
// start playback
} else {
// stop playback
}
}
);
请注意,如果您能够枚举每个组的所有按钮ID,则可以通用地编写代码,例如,
if (isChecked) {
int myGroup = (Integer) buttonView.getTag(); // Define the group in the view's tag
for (int id: groups.get(myGroup)) {
if (id != buttonView.getId()) ((CompoundButton) findViewById(id)).setChecked(false);
}
另一个更复杂的答案是构建自己的UI小部件,并为其提供所需的任何语义。不过,这不在我可以描述的范围之内。