2017-03-25 14 views
1

我有一個自定義佈局,我想將其放在BottomNavigationView菜單中。就像NavigationView我想在NavigationView抽屜中設置自定義佈局,但不管我如何嘗試,我仍然無法在底部視圖中獲得自定義佈局顯示。如何在Android中獲取actionView BottomNavigation查看

步驟:

<?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(); 

在這裏,查看總是得到空。

問題是不管我怎麼做,按鈕視圖在屏幕上只顯示一個空白,並且我始終無法從菜單對象獲取操作佈局。 我該如何解決這個問題?

回答

3

BottomNavigationView不支持ActionView s。

BottomNavigationView使用若干internal classes (everything started with BottomNavigation)。查看BottomNavigationMenuView's buildMenuView,它不考慮在MenuItem上設置的任何ActionView

+1

我認爲這是答案,因爲我用斷點來檢查菜單對象,但我找不到任何相關的視圖。這很令人困惑,因爲這些方法已經存在,但實際上並不支持。 – TaoBit

+2

@TaoBit - '

'是定義菜單的通用方式:並不意味着每個使用菜單的實現都支持API的每個部分。 – ianhanniballake