我有两个项目,如果我在它们之间交替,它将取消选中另一个项目。但如果我单击一次我设置选中的项目(true);但是当我再次单击时,我希望它设置checked(false);但这并不能取消勾选该项。我尝试设置Checkable(false);这样就取消了项的检查,但是即使在setCheckable(true)之前写了setCheckable(true),我也无法再次检查它。
因此,代码只对一个更改起作用,然后,由于它总是在之后被检查,if语句就不再起作用了。我可以添加更多的代码,如果需要,但感觉我缺少一些小的部分。
这是密码
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.page_1:
item.setChecked(true);
break;
case R.id.page_2:
if(item.isChecked()) {
item.setChecked(false);
brushComponent_layout.setVisibility(View.INVISIBLE);
}
else {
item.setChecked(true);
brushComponent_layout.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
return false;
}
});
我做了一个变通方法,给了我相同的功能,我正在寻找,仍然非常奇怪。
而不是检查如果它是可检查的或已检查的,取消检查和不工作的。我看了看布局的可视性,只是让项目一直检查。从视觉上看,它有点难看,但它的工作,这是更重要的。
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.page_1:
item.setChecked(true);
break;
case R.id.page_2:
if(brushComponent_layout.getVisibility() == View.VISIBLE) {
brushComponent_layout.setVisibility(View.INVISIBLE);
}
else {
item.setChecked(true);
brushComponent_layout.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
return true;
}
});