【问题标题】:Android Disable zoom effect in bottom navigation barAndroid 在底部导航栏中禁用缩放效果
【发布时间】:2017-07-12 18:30:11
【问题描述】:

我试图实现底部导航栏。在这里,当菜单项在单击时放大并导致一些标题文本从栏中截断时,我遇到了一个问题。

就像给出的截图一样

有没有办法防止这种缩放效果?

【问题讨论】:

  • 提供一些代码

标签: java android uinavigationbar tabview bottomnavigationview


【解决方案1】:

文本标签提供简短,有意义的定义到底部 导航图标。 避免使用长文本标签,因为这些标签不会 截断或换行

根据指南,您不应使用长文本。

Source

【讨论】:

  • 很好,但就我而言,所有五个选项都是强制性的。而且 roughike 可以选择自定义它,以便所有选项都清晰可见
【解决方案2】:

您所要做的就是在您的 dimens.xml 文件中覆盖 design_bottom_navigation_active_text_size 的尺寸。

<dimen name="design_bottom_navigation_active_text_size" tools:override = "true" >12sp</dimen>

这里 12sp 是 inactive 底部导航项的默认文本大小。也为 active 底部导航项设置相同的值。您将没有缩放效果。

【讨论】:

    【解决方案3】:

    我已经做了很多试验和错误,现在我意识到更好的选择是使用第三方库作为底栏。更好的解决方案之一是roughike 有很多可用的自定义项

    【讨论】:

      【解决方案4】:
      public static 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.setShifting(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);
              }
          }
      }
      @Override
      protected void onStop() {
          super.onStop();
      }
      

      }

      之后放这个

          BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
      

      我试过了,效果很好

      【讨论】:

        猜你喜欢
        • 2020-11-16
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-07
        • 2019-02-22
        相关资源
        最近更新 更多