抽屜導(dǎo)航 NavigatinView的menuItem后加上小紅點(diǎn)

利用Navigation導(dǎo)航組件配合DrawerLayout和NavigationView實(shí)現(xiàn)APP的抽屜導(dǎo)航真的是很方便;但是拿到UI的設(shè)計(jì)圖后發(fā)現(xiàn)抽屜導(dǎo)航的菜單樣式都是自定義的。那默認(rèn)的樣式只是一個(gè) 圖標(biāo) + item標(biāo)題 + 選中背景 這些。那怎么來處理呢?
實(shí)現(xiàn)效果圖:


消息提醒的藍(lán)色小點(diǎn).jpg

利用menuItem 的 actionLayout屬性:

<menu
    ...
    xmlns:app="http://schemas.android.com/apk/res-auto"
    ...>
   <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications"
        android:title="@string/title_notifications"
        app:actionLayout="@layout/drawer_menu_item"/>
    ...
</menu>

注意由于這里我們一般用的都是support支持庫或者androidx庫所以這里一定要用 app:actionLayout 而不是android:actionLayout。用android:actionLayout會(huì)沒有任何效果,item的actionView還是null;
Try app:actionLayout="@layout/menu_header" instead of android:actionLayout="@layout/menu_header" if you are using support libraries.
而用app:actionLayout 時(shí)記得在最外層加上命名空間:xmlns:app="http://schemas.android.com/apk/res-auto"

其中 drawer_menu_item.xml 為layout文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center_vertical">
    <TextView
        android:id="@+id/msg"
        android:background="@drawable/shape_btn_radius16_clickable"
        android:textColor="@android:color/white"
        android:gravity="center"
        android:layout_width="20dp"
        android:layout_height="20dp"/>
</LinearLayout>

在頁面代碼中給item的actionView設(shè)置值

 val actionView = binding.navView.menu.findItem(R.id.navigation_notifications).actionView as LinearLayout
 actionView.findViewById<TextView>(R.id.msg).text = "9"

上面我通過viewbinding來拿到NavgationView的,當(dāng)然也可以findViewById拿到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容