web-dev-qa-db-ja.com

カスタムアイテムを含む下部ナビゲーションビュー(actionLayout)

新しい BottomNavigationView にカスタムアイテムを追加したいと思います。

通常のナビゲーションビューでカスタムビューを追加するチュートリアルはたくさんありますが、一番下のビューについては何も見つかりません。

これが私の見解です

   <Android.support.design.widget.BottomNavigationView
        Android:id="@+id/navigation_view"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:menu="@menu/menu_main" />

そしてこれがメニューです

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

<item
    Android:id="@+id/menu_one"
    Android:icon="@drawable/ic_tab_one"
    Android:title="one" />
<item
    Android:id="@+id/menu_two"
    app:actionLayout="@layout/item_action_notification"
    Android:title="two" />

ご覧のとおり、通常どおりactionLayoutタグを付けましたが、表示されません。

何か案は?ありがとう。

11
Manza

以下の解決策が役立つことを願っています。

  1. レイアウトを作成します:layout/_custom_cart_item_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">
    
    <TextView
    Android:id="@+id/cart_badge"
    Android:layout_width="20dp"
    Android:layout_height="20dp"
    Android:layout_gravity="top|center_horizontal"
    Android:layout_marginLeft="10dp"
    Android:background="@drawable/circle"
    Android:backgroundTint="@color/colorAccent"
    Android:gravity="center"
    Android:text="0"
    Android:textColor="@Android:color/white"
    Android:textSize="12sp" />
    
    </FrameLayout>
    
  2. drawable/circle

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android" 
    Android:shape="oval">
    <solid Android:color="@color/white"/>
    <size Android:width="40dp" Android:height="40dp" />
    </shape>
    
  3. MainActivity:layout/main_activity.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Android.support.constraint.ConstraintLayout
    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="com.MainActivity">
    
    <Android.support.design.widget.BottomNavigationView
    Android:id="@+id/bot_nav"
    Android:layout_width="0dp"
    Android:layout_height="56dp"
    Android:background="@color/white"
    Android:elevation="2dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:menu="@menu/bottom_menu" />
    
    </Android.support.constraint.ConstraintLayout>
    
  4. メニュー:menu/bottom_menu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">
    
    <item
    Android:id="@+id/menu_home"
    Android:icon="@drawable/home24"
    Android:title="Home" />
    
    <item
    Android:id="@+id/menu_cart"
    Android:icon="@drawable/shoppingcart24"
    Android:title="Cart" />
    <item
    Android:id="@+id/menu_acct"
    Android:icon="@drawable/user24"
    Android:title="Account" />
    </menu>
    
  5. onCreate内のMainActivityクラス内

    BottomNavigationView mbottomNavigationView =findViewById(R.id.bot_nav);
    
    BottomNavigationMenuView mbottomNavigationMenuView =
    (BottomNavigationMenuView) mbottomNavigationView.getChildAt(0);
    
    View view = mbottomNavigationMenuView.getChildAt(1);
    
    BottomNavigationItemView itemView = (BottomNavigationItemView) view;
    
    View cart_badge = LayoutInflater.from(this)
    .inflate(R.layout._custom_cart_item_layout,
     mbottomNavigationMenuView, false);
    
    itemView.addView(cart_badge);
    

出力:画像

それがあなたのために同様に働くことを願っています。

ありがとうございました

9
Pramila Shankar