首页 > 解决方案 > Bottomnavigationbar 无法将可检查设置为 false,但 true 可以正常工作

问题描述

我有两个项目,如果我在它们之间交替,它将取消选中另一个项目。但是如果我在一个项目上单击一次我 setChecked(true); 但是当我再次单击时,我希望它 setChecked(false); 但这并没有取消选中该项目。我试过 setCheckable(false); 并且取消选中该项目,但即使我在setChecked(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;
            }
        });


标签: javaandroid

解决方案


我做了一个解决方法,给了我我正在寻找的相同功能,仍然很奇怪。

而不是检查它是否可以检查或检查和取消检查并且不起作用。我查看了布局的可见性,并一直检查该项目。视觉上它有点难看,但它的工作原理更重要。

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

推荐阅读