我正在尝试在应用程序中使用底部导航视图,但是由于它在底部导航视图中显示的项目数量似乎有所不同,因此无法正常使用
当我只有三个项目时,这就是视图。
它显示为我想要的
但是当我将其设置为4时,视图就会变糟
它不能扩展到适合屏幕边缘的位置,它只是位于屏幕中央。
下面是我的活动主要布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/main_app_bar"
layout="@layout/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/navigation" />
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:1)
在底部导航视图中添加标签可见性模式
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:labelVisibilityMode="labeled" // this line
android:background="@color/colorPrimary"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/navigation" />
答案 1 :(得分:1)
BottomNavigationView具有条件:当有3个以上的项目时,请使用平移模式。 查看此答案。 Visit
答案 2 :(得分:0)
Bottom Navigation视图创建底部导航栏,使您只需单击一下即可轻松浏览和切换顶级内容视图。当应用程序具有三到五个顶级目标位置时,应使用底部导航视图。
将BottomNavigation视图和FrameLayout实施到XML布局文件中,即activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<FrameLayout
android:id="@+id/viewlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemBackground="@color/colorAccent"
android:layout_gravity="bottom"
tools:elevation="2dp"
app:itemTextColor="#fff"
android:layout_alignParentBottom="true"
app:menu="@menu/bottom_menu" />
</RelativeLayout>
实施底部导航视图的OnItemSelectedListener可以在不同的fragments之间进行切换:
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.action_home:
fragment = home;
setTitle(item.getTitle());
break;
case R.id.action_msg:
fragment = msg;
setTitle(item.getTitle());
break;
case R.id.action_video:
fragment = video;
setTitle(item.getTitle());
break;
case R.id.action_info:
default:
fragment = noti;
setTitle(item.getTitle());
break;
}
fragmentManager.beginTransaction().replace(R.id.viewlayout, fragment).commit();
return true;
}
});
// Set default selection
bottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
bottomNavigationView.setSelectedItemId(R.id.action_home);
}
查看此答案:How to create bottom navigation bar android ?
快乐编码...
答案 3 :(得分:-1)
由于您有三个以上的项目,因此可能必须禁用变速模式。请参阅问题How to disable BottomNavigationView shift mode?
中的分析器