Android 中 BottomNavigationView 转换模式的说明及使用

BottomNavigationView创建底部导航栏,只需轻按一下即可轻松浏览和切换顶级内容视图。

当我们的应用程序有3个顶级目的地时,该组件会自动均匀地分配它们,保持相同的距离。

现在,如果我们的应用程序有超过3个顶级目标,则BottomNavigationView的默认行为是启用名为shift模式的内容。在此模式下,当选择组件中的项目时,将显示增加元素的动画以及对其他元素的缩小效果,

有时候这个效果不是我们应用程序中需要的效果,那么我们需要应用一个简单但不是众所周知的指令来实现像基本行为类似的东西,就像有3个顶级目的地的基本情况一样。该指令是来自app工作区的labelVisibilityMode

<android.support.design.widget.BottomNavigationView
    android:id="@+id/main_bottom_navigation"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginBottom="0dp"
    android:layout_marginEnd="0dp"
    android:layout_marginStart="0dp"
    android:background="@color/bottombar_background"
    android:theme="@style/Widget.BottomNavigationView"
    app:itemBackground="@color/bottombar_background"
    app:itemIconTint="@drawable/bottomnav_item_color"
    app:itemTextColor="@drawable/bottomnav_item_color"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:labelVisibilityMode="labeled"
    app:menu="@menu/main_bottom_navigation" />

menu目录下 main_bottom_navigation.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />

    <item
        android:id="@+id/navigation_home1"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_notifications1"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />

</menu>

BottomNavigationView navigation = findViewById(R.id.main_bottom_navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);


private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    mTextMessage.setText(R.string.title_home);
                    return true;
                case R.id.navigation_dashboard:
                    mTextMessage.setText(R.string.title_dashboard);
                    return true;
                case R.id.navigation_notifications:
                    mTextMessage.setText(R.string.title_notifications);
                    return true;
                case R.id.navigation_home1:
                    mTextMessage.setText("Home Test");
                    return true;
                case R.id.navigation_notifications1:
                    mTextMessage.setText("Notification Test");
                    return true;
            }
            return false;
        }
    };

现在可以使用app:labelVisibilityMode="[labeled, unlabeled, selected, auto]",但是必须是支持库以28-alpha开头

  • labeled 将保持所有标签可见。
  • unlabeled 将只显示图标。
  • selected 将仅显示所选项目的标签和班次项目。
  • auto将根据您拥有的物品数量选择标记或选择。标记为1-3项,并选择3项以上。

如果我们还没有使用支持库28,那么可以执行一个解决方法 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值