问题
I would like to add a custom item in the new BottomNavigationView .
There are plenty of tutorial of adding a custom view with the normal navigation view but I can't find anything regarding the bottom one.
This is my view
<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" />
And this is the menu
<?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" />
As you can see I put actionLayout tag as you would do normally, but it is simply not displayed.
Any ideas? Thanks.
回答1:
Hope the below solution will help.
Create a layout : 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>
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>
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>
menu : 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>
In your MainActivity class within onCreate
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);
Output : Image
Hope it will work similar for you.
Thank you
来源:https://stackoverflow.com/questions/42653955/bottom-navigation-view-with-custom-item-actionlayout