Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BottomNavigationView的菜单项间距相等_Android_Android Xml_Android Bottomnav_Android Bottom Nav View - Fatal编程技术网

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