我正在尝试使用设计库中的 BottomNavigationView。一切正常,除了我希望每个导航项目都开始一个活动,因此我想取消选中导航中的所有项目,使它们看起来相同。我尝试了几种解决方案,其中大部分都不起作用,最后一个确实有效,但感觉很hacky。
首先我这样做:
ViewGroup nav = (ViewGroup) bottomNav;
for(int i=0; i < nav.getChildCount(); i++) {
nav.getChildAt(i).setSelected(false);
}
Run Code Online (Sandbox Code Playgroud)
这似乎什么也没做。
然后我尝试:
int size = bottomNav.getMenu().size();
for (int i = 0; i < size; i++) {
bottomNav.getMenu().getItem(i).setChecked(false);
}
Run Code Online (Sandbox Code Playgroud)
这仅检查了最后一项而不是第一项。
最后我尝试在菜单中添加一个虚拟项目并执行以下操作:
bottomNav.getMenu().findItem(R.id.dummmy_item).setChecked(true);
bottomNav.findViewById(R.id.dummmy_item).setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
这几乎有效,但它隐藏了下面的标题,在我的情况下这对上下文很重要。
然后我找到了这个答案:https : //stackoverflow.com/a/41372325/4888701并编辑了我上面的解决方案以包含它。具体来说,我添加了 proguard 规则,我使用了那个确切的帮助器类并调用了该方法。它看起来正确,似乎有效。但对我来说感觉很hacky,因为:
有没有其他更简单的方法来实现这一点,或者这是我们当前版本的库中最好的方法?
(作为旁注,我想知道此解决方案中的 proguard 规则是否必要以及它的作用是什么?我对 proguard 一无所知,但该项目是从启用它的其他人那里继承的。)
我有一个应用程序,我使用Butterknife,最近我发现了一个片段,我没有unbinder.unbind()在片段中调用onDestroyView().我解决了这个问题,但这让我开始思考.
这会导致什么样的错误?为什么?我现在没有特别的错误,但我想知道将来要注意什么,并且图书馆的网站没有说明这可能导致的问题.