Android BottomNavigationView的菜单项间距相等
我正在使用Android BottomNavigationView的菜单项间距相等,android,android-xml,android-bottomnav,android-bottom-nav-view,Android,Android Xml,Android Bottomnav,Android Bottom Nav View,我正在使用BottomNavigationView(从现在开始使用BNV)在片段之间切换,但我找不到XML属性,也找不到一种让所有项目(图像)等距排列的方法,以便它们填充所有设备的整个宽度 我的活动XML包含两个BNV(请原谅颜色不好,只是为了让它更清楚): 就像平板电脑上的这个: 希望有人能在这方面帮助我 编辑:感谢用户@GoRoS解决了BNV左右边缘空白的问题。只需将android:background=“@android:color/holo_orange_dark”添加到BNV即可
BottomNavigationView
(从现在开始使用BNV)在片段之间切换,但我找不到XML属性,也找不到一种让所有项目(图像)等距排列的方法,以便它们填充所有设备的整个宽度
我的活动XML包含两个BNV(请原谅颜色不好,只是为了让它更清楚):
就像平板电脑上的这个:
希望有人能在这方面帮助我
编辑:感谢用户@GoRoS解决了BNV左右边缘空白的问题。只需将android:background=“@android:color/holo_orange_dark”
添加到BNV即可解决此问题。在提及背景颜色时,您只是在混合概念
app:itemBackground=每个菜单项的默认背景
android:background=可作为视图背景的绘图
Android正在正确地为您拥有的每个菜单项填充holo_orange_dark
颜色,但这并不意味着它将填充整行。为此,只需使用普通的android:background
属性即可
这是添加android:background=“@android:color/holo\u orange\u dark”
行到底部导航视图后的效果:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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=".Navigation">
<!--Toolbar-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@color/colorPrimary"
app:titleTextColor="@color/white"
android:elevation="4dp" />
<FrameLayout 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:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginTop="50dp"
android:layout_marginBottom="57dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".Navigation">
</FrameLayout>
<!--BNV-->
<android.support.design.widget.BottomNavigationView
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="0dp"
android:background="@android:color/holo_orange_dark"
app:elevation="0dp"
app:itemBackground="@android:color/holo_orange_dark"
app:itemIconTint="@color/black"
app:itemTextColor="@color/black"
app:menu="@menu/footer" />
</RelativeLayout>
相反,如果将其删除,则结果是原来的问题:
当提到背景色时,你只是在混用概念
app:itemBackground=每个菜单项的默认背景
android:background=可作为视图背景的绘图
Android正在正确地为您拥有的每个菜单项填充holo_orange_dark
颜色,但这并不意味着它将填充整行。为此,只需使用普通的android:background
属性即可
这是添加android:background=“@android:color/holo\u orange\u dark”
行到底部导航视图后的效果:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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=".Navigation">
<!--Toolbar-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@color/colorPrimary"
app:titleTextColor="@color/white"
android:elevation="4dp" />
<FrameLayout 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:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginTop="50dp"
android:layout_marginBottom="57dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".Navigation">
</FrameLayout>
<!--BNV-->
<android.support.design.widget.BottomNavigationView
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="0dp"
android:background="@android:color/holo_orange_dark"
app:elevation="0dp"
app:itemBackground="@android:color/holo_orange_dark"
app:itemIconTint="@color/black"
app:itemTextColor="@color/black"
app:menu="@menu/footer" />
</RelativeLayout>
相反,如果将其删除,则结果是原来的问题:
好的,我自己设法找到了一个解决方案,解决这个问题的XML属性是
app:itemHorizontalTranslation="false"
默认为true
。这将“扩展”项目以适应整个宽度。好的,我自己设法找到了一个解决方案,解决这个问题的XML属性是
app:itemHorizontalTranslation="false"
默认为true
。这会“扩展”项目以适应整个宽度。您是否尝试过匹配父项而不是填充父项?是的,但这会达到预期效果:包装内容和中心,不会真正改变任何内容。空白空间仍然存在,但在技术上它不是视图本身的一部分,它只是背景,这个属性<代码> Android:LayOutSuffel=“FILIHORE”使BNV与它的父布局一样宽。您是否检查了此父布局的宽度?父布局是作为背景设置的RelativeLayout。它的宽度和高度是匹配的,因此覆盖了整个背景。我将发布一个编辑来澄清这一点,这样bnv覆盖了父对象的全部宽度,而您的问题是项目a被推到了中心?因为图像有误导性。您尝试过匹配父对象而不是填充父对象吗?是的,但这会达到预期效果:包装内容和中心,不会真正改变任何东西。空白空间仍然存在,但在技术上它不是视图本身的一部分,它只是背景,这个属性<代码> Android:LayOutSuffel=“FILIHORE”使BNV与它的父布局一样宽。您是否检查了此父布局的宽度?父布局是作为背景设置的RelativeLayout。它的宽度和高度是匹配的,因此覆盖了整个背景。我将发布一个编辑来澄清这一点,这样bnv覆盖了父对象的全部宽度,而您的问题是项目a被推到了中心?因为图片有误导性。我已经用一个简单的类似项目演示了添加该行的不同结果,请检查上面更新的答案。哦,糟糕,我认为只需要用背景替换itemBackground。当两者都添加时,它会起作用,谢谢。不过我要修改这个问题,我仍然需要解决“间距”的问题,除了角落里的空白,没有问题。Android材质设计指南将目标间距提升为默认行为。看看谷歌官方的iosched应用在平板电脑上的样子:我会记住这一点,但我还是希望它看起来像那样。至少有一种方法可以做到这一点,如果它不遵循材料设计指南,这不仅仅对我的情况有影响。我已经用一个简单的类似项目演示了添加这一行的不同结果,检查上面更新的答案。哦,我的错,我认为只需要用背景替换itemBackground。当两者都添加时,它会起作用,谢谢。不过我要修改这个问题,我仍然需要解决“间距”的问题,除了角落里的空白,没有问题。Android材质设计指南将目标间距提升为默认行为。看看谷歌官方的iosched应用在平板电脑上的样子:我会记住这一点,但我还是希望它看起来像那样。至少有一种方法可以做到这一点,如果它不遵循材料设计指南,这不仅对我的情况很重要。我面临着同样的问题,尝试在bnv中添加app:itemHorizontalTranslation=“false”,但它不起作用。你能帮我一下吗?应该是itemHorizontalTranslationEnabled
。但这对我不起作用。项目仍然聚集在中间我在BottomNavigationView标记中添加了下面的行,并修复了此错误:app:labelVisibilityMode=“label”我面临相同的问题,尝试添加app:itemHorizontalTranslation