我要在BottomNavigationView菜单中放入一个自定义布局。就像NavigationView一样,我想在NavigationView抽屉中设置自定义布局,但是无论如何尝试,我仍然无法在底部视图中显示自定义布局。

脚步:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout 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/pull_to_refresh"
                                          android:layout_width="match_parent"
                                          android:layout_height="match_parent"
                                          android:orientation="vertical">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
    >

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/primary_color"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/AppTheme.PopupOverlay">

                <ImageView
                    android:id="@+id/header_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    tools:ignore="ContentDescription"/>

            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.AppBarLayout>

        <!-- Main container for fragment or other views -->
        <include layout="@layout/content_main"/>

        <android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            app:menu="@menu/activity_home_bottom"
        />
    </android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>


菜单XML如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_overview"
        android:title=""
        app:actionLayout="@layout/bottomview_icon_menu"
        app:showAsAction="ifRoom|collapseActionView|"
    />
</menu>


自定义视图如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/menu_layout"
              android:background="@color/alpha_color"
              android:layout_width="50dp"
              android:layout_height="56dp"
              android:orientation="vertical"
>

    <TextView
        android:id="@+id/menu_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/dark_gray_color"
        android:text="title"
        android:textSize="@dimen/text_subheading_size"/>

    <TextView
        android:id="@+id/menu_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hihi"
        android:textColor="@color/dark_gray_color"
        android:textSize="@dimen/text_subheading_size"/>

</LinearLayout>


我在OnCreate()中的调用方法是这样的:

mBottomView = (BottomNavigationView) findViewById(R.id.bottom_view);
MenuItem item = menu.findItem(R.id.menu_overview);
View view = item.getActionView();


在这里,视图始终为null。

问题是无论我怎么做,按钮视图在屏幕上仅显示空白,而我始终无法从菜单对象获得操作布局。
我怎样才能解决这个问题?

最佳答案

BottomNavigationView不支持ActionView

BottomNavigationView使用多个internal classes (everything started with BottomNavigation)。查看BottomNavigationMenuView's buildMenuView时,它没有考虑在ActionView上设置的任何MenuItem

关于android - 如何在Android BottomNavigation View 中获取actionView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43022737/

10-10 21:00