Android,BottomNavigationView,为每个项目设置权重?

时间:2017-05-04 08:04:34

标签: android xml bottomnavigationview

我在我的应用中使用底部导航栏。它包含3个项目,如下所示:

<LinearLayout 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/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.MainActivity">



<FrameLayout
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:background="#ffffff"
    android:layout_weight="9">

    <GridView
        android:id="@+id/gvMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3" />
</FrameLayout>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="bottom"
    android:layout_weight="1"
    android:background="?android:attr/windowBackground"
    android:backgroundTint="#f5f5f5"
    app:menu="@menu/navigation" />

</LinearLayout>

这里有“@ menu / navigation”代码:

<?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="Button1"/>

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

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

</menu>

现在我想以某种方式让中间按钮占用一半的空间,另外两个占用另一半。但是没有重量属性存在。换句话说,我想将button2的布局权重设置为2,将button1和button3的布局权重设置为1.有没有办法做到这一点?

感谢任何帮助或提示。

以下是可能有用的形状:

目前的布局:

Current State

我的目标是改变它:

What I want

1 个答案:

答案 0 :(得分:0)

这是我的建议: 您可以使用布局来替换菜单:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="52dp"
    android:orientation="horizontal">

    <FrameLayout
        android:id="@+id/fl_page_home"
        android:layout_width="wrap_content"
        android:layout_height="57dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical">

        <Button

            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_gravity="center_horizontal"
            android:background="your drawable"
             />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="32dp"
            android:text="your text" />

    </FrameLayout>

     <FrameLayout
        android:id="@+id/fl_page_dashboard"
        android:layout_width="wrap_content"
        android:layout_height="57dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical">

        <Button

            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_gravity="center_horizontal"
            android:background="your drawable"
             />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="32dp"
            android:text="your text" />

    </FrameLayout>

     <FrameLayout
        android:id="@+id/fl_page_notification"
        android:layout_width="wrap_content"
        android:layout_height="57dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical">

        <Button

            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_gravity="center_horizontal"
            android:background="your drawable"
             />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="32dp"
            android:text="your text" />

    </FrameLayout>

</LinearLayout>

和高度是灵活的,您可以新建一个新的xml,将其写为底部导航,然后包含在LinearLayout中。

在Java类中,您可以实现onclick侦听器。