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,那么可以执行一个解决方法