2017-11-04 5 views
1

私は4つのボタンを持つ私のアプリケーションのためのデフォルトのBottomViewナビゲーションバーを使用しています、彼らはひどいシフトアニメーションを持っており、互換性のlibにメソッドがないようです。それを無効にする。助けてください。アイコンをクリックしたときに下部ナビゲーションビューでアニメーションを無効にするにはどうすればよいですか?

P.s私は第三者ボトムナビを使用したくありません。

+1

[this]を見てください(https://stackoverflow.com/questions/40176244/how-to-disable-bottomnavigationview) -shift-mode) –

+0

この質問を編集してコードを投稿できますか? –

+0

@AswinPAshokありがとう、それは働いた:) –

答えて

0
//Create a new class Bottom Navigation Bar helper and then implement it in the buttons classes 

public class BottomNavigationViewHelper { 
    @SuppressLint("RestrictedApi") 
    public static void disableShiftMode(BottomNavigationView view) { 
     BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0); 
     try { 
      Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode"); 
      shiftingMode.setAccessible(true); 
      shiftingMode.setBoolean(menuView, false); 
      shiftingMode.setAccessible(false); 
      for (int i = 0; i < menuView.getChildCount(); i++) { 
       BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i); 
       //noinspection RestrictedApi 
       item.setShiftingMode(false); 
       // set once again checked value, so view will be updated 
       //noinspection RestrictedApi 
       item.setChecked(item.getItemData().isChecked()); 
      } 
     } catch (NoSuchFieldException e) { 
      Log.e("BNVHelper", "Unable to get shift mode field", e); 
     } catch (IllegalAccessException e) { 
      Log.e("BNVHelper", "Unable to change value of shift mode", e); 
     } 
    } 


//and then just use this code in every button class 

protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_activity); 
     BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavViewBar); 
     BottomNavigationViewHelper.disableShiftMode(bottomNavigationView); 
     BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView); 
     Menu menu=bottomNavigationView.getMenu(); 
     MenuItem menuItem=menu.getItem(ACTIVITY_NUM); 
     menuItem.setChecked(true); 
    } 

これにより、ボタンがうまく機能します。 私はアンドロイドに新しいです、コードは私によって書かれていませんが、私はあなたに役立つことを願っています

関連する問題