7

enter image description hereBottomNavigationView wyłączyć tryb zmiany biegów bez użycia odbicie

BottomNavigationView nie pozwala na wyłączenie trybu zmiany biegów ma ten problem rozwiązany w nowej wersji biblioteki wsparcia?

Istnieje również kilka rozwiązań, które wykorzystują mechanizm refleksyjny. Nie sądzę, że jego właściwą drogą jest rozwiązanie tego poważnego problemu.

All ready seen this solution don't want to use this

+0

Szukasz rozwiązania tego samego problemu. –

Odpowiedz

0

Witam mam twarz ten sam problem i wiem, że jej żmudne zadanie załadować odzwierciedlać biblioteki Java w Xamarin android.

Ale dzięki "James Montemagno" przyjść z jego rozwiązaniem. Oto link, który możesz śledzić i uzyskać pożądany wynik!

To zadziałało dla mnie, mam nadzieję, że będzie dla ciebie. Szczęśliwe kodowanie! :)

Link: https://montemagno.com/remove-shifting-bottomnavigationview-android/

Git postu: https://github.com/jamesmontemagno/Xamarin-Templates/blob/master/Xamarin.Android-Templates/Projects/BottomTabsApp/BlankAppCompat/BottomNavigationViewUtils.cs

publicznych klasy statyczne BottomNavigationViewUtils {

/// <summary> 
    /// Enable or disable shift mode on bottom navigation view 
    /// </summary> 

    public static void SetShiftMode(this BottomNavigationView bottomNavigationView, bool enableShiftMode, bool enableItemShiftMode) 
    { 
     try 
     { 
      var menuView = bottomNavigationView.GetChildAt(0) as BottomNavigationMenuView; 
      if (menuView == null) 
      { 
       System.Diagnostics.Debug.WriteLine("Unable to find BottomNavigationMenuView"); 
       return; 
      } 


      var shiftMode = menuView.Class.GetDeclaredField("mShiftingMode"); 

      shiftMode.Accessible = true; 
      shiftMode.SetBoolean(menuView, enableShiftMode); 
      shiftMode.Accessible = false; 
      shiftMode.Dispose(); 


      for (int i = 0; i < menuView.ChildCount; i++) 
      { 
       var item = menuView.GetChildAt(i) as BottomNavigationItemView; 
       if (item == null) 
        continue; 

       item.SetShiftingMode(enableItemShiftMode); 
       item.SetChecked(item.ItemData.IsChecked); 

      } 

      menuView.UpdateMenuView(); 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Debug.WriteLine($"Unable to set shift mode: {ex}"); 
     } 
    } 
} 

niż stosowanie go:

var Bott omNavigationView = FindViewById (Resource.Id.bottomNavigationBar); bottomNavigationView.SetShiftMode (false, false);

+0

Witamy w StackOverflow! W tym przypadku opublikowanie linku nie jest wystarczające, upewnij się, że Twoja odpowiedź będzie przydatna w przyszłości, jeśli linki te przestaną działać: podaj odpowiednie części stron ** wewnątrz swojego wpisu **. – juzraai

+0

To wykorzystuje odbicie. –