2017-07-12 31 views
3

いくつかの条件に基づいてBottomNavigationViewのメニュー項目を動的に非表示にしたいと考えています。私は以下を試みたが、それは動作していない。BottomNavigationViewのメニュー項目を動的に非表示にするにはどうすればいいですか?

mBottomNavigationView.getMenu() 
      .findItem(R.id.item_name) 
      .setVisible(false); 

mBottomNavigationView.invalidate(); 
+0

コードは期待どおりに動作するはずです。あなたもpostInvalidate()を試すことができます – santalu

+0

try postInvalidate too。動いていない。私が以下に答えたように、私は同じ目的を達成するためにremoveItemメソッドを使用しました。 – Ram

答えて

12
mBottomNavigationView.getMenu().removeItem(R.id.item_name); 

removeItemトリックを行います。なぜsetVisibleメソッドが動作していないのか分かりません。

+0

解決が見つかったらうれしいです。私は私の答えを参考にして削除しました。 setVisibilityはBottomNavigationViewやその継承されたメソッドのメソッドではありませんが、メニューリソースファイルを使用するので、removeItemを含むメニューのパブリックメソッドを使用できますか?https://developer.android.com/reference /android/support/design/widget/BottomNavigationView.html – BusinessPlanQuickBuilder

+0

動的に可視に設定する方法はありますか? –

+0

@ JinsonPaul removeItemは削除のために動作するので、add()メソッドが動作すると思います。 しかし、誰かがsetVisible()メソッドがうまくいかない理由を説明できれば幸いです。 – Ram

0

removeItemは、項目が非表示になっているときに、バーのメニュー項目を置き換えます。私はやや良い方法を見つけました。メニューxmlを非表示にするメニュー項目のグループを作成します。

あなたbottom_menu.xmlで

<menu...> 
    <group android:id="@+id/hiddenmenu"> 
     <item.../> 
     <item.../> 
    </group> 
    <item.../> 
</menu> 

そして、あなたのactivity.csで

Menu menu = mbottomNavigation.getMenu(); 
menu.getMenu.setGroupEnabled(R.id.hiddenmenu, false); 

が、すべてのメニュー項目が表示されているこのセットアップ、メニュー項目のチェックを変更状態に駄目だ。 また、メニュー項目を空のグループに追加しようとしましたが、グループがGroupDisableに応答しなくなりました...

関連する問題