提问者:小点点

Bottomnavigationbar无法将checkable设置为false,但true可以正常工作


我有两个项目,如果我在它们之间交替,它将取消选中另一个项目。但如果我单击一次我设置选中的项目(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;
            }
        });



共1个答案

匿名用户

我做了一个变通方法,给了我相同的功能,我正在寻找,仍然非常奇怪。

而不是检查如果它是可检查的或已检查的,取消检查和不工作的。我看了看布局的可视性,只是让项目一直检查。从视觉上看,它有点难看,但它的工作,这是更重要的。

        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;
            }
        });