13

私のプロジェクトでは、デザインサポートライブラリ25のボトムナビゲーションビューを実装しました。私はビューに5つのアイコンがあります。アイコンが選択されるたびにアニメーションがいくつかあります。しかし、3つ以下のアイコンがアニメーションを表示していないとき。私はそのアニメーションを削除したいと思うし、アイコンの色の変更だけが必要です。どうすればこれを達成できますか?十分なグーグルを行ったが、解決策を見つけることができなかった。助けてください。ありがとう。アンドロイドの下部ナビゲーションビューのアイコンアニメーションを削除するには

+1

可能な重複は、[BottomNavigationViewシフトモードを無効にする方法は?](https://stackoverflow.com/questions/40176244/how-to-disable-bottomnavigationview-shift-mode) –

答えて

66

回答はこちらからthreadです。

アニメーションまたはシフトモードを削除します。

BottomNavigationViewの実装には、次の条件があります。3つ以上のアイテムがある場合、シフトモードを使用します。

ヘルパークラスを作成します

import android.support.design.internal.BottomNavigationItemView; 
import android.support.design.internal.BottomNavigationMenuView; 
import android.support.design.widget.BottomNavigationView; 
import android.util.Log; 
import java.lang.reflect.Field; 

public class BottomNavigationViewHelper { 
    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); 
     } 
    } 
} 

使用

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar); 
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView); 
+1

こんにちは、このquetionとANSをありがとうございましたこれは完璧ですが、私はまだアイコンの色に苦しんでいます、私のデフォルトのアイコンは黒ですが、それは明るい黒を表示し、アイコンをクリックすると色が白に変わります。 –

+0

なぜこれが私のアプリではうまくいかないのか分かりませんが(今私は何時間も苦労しています) – pamobo0609

+0

アイテムをクリックするとアニメーションが無効になることがあります。 –

3

BottomNavigationViewEx標準BottomNavigationViewに良い拡張機能です。 enableShiftingMode(false)はあなたのための仕事です。

関連する問題