简体   繁体   English

如何使用 BadgeDrawable 在汉堡导航菜单图标上添加徽章?

[英]How to add Badge on hamburger navigation menu icon with BadgeDrawable?

I add Badge on a button like this way .我以这种方式在按钮上添加Badge

I want to add Badge on hamburger navigation menu icon with this way but I don't know how.我想用这种方式在hamburger navigation菜单图标上添加Badge ,但我不知道如何。

I found a few solutions but none use BadgeDrawable .我找到了一些解决方案,但没有一个使用BadgeDrawable

This is my code but the result is not what I want:这是我的代码,但结果不是我想要的:

activity_main:活动主:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar_main"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
             />
    </FrameLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navigationView_main"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        />

</androidx.drawerlayout.widget.DrawerLayout>

MainActivity:主要活动:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NavigationView navigationView = findViewById(R.id.navigationView_main);
        DrawerLayout drawerLayout = findViewById(R.id.drawerLayout_main);
        Toolbar toolbar = findViewById(R.id.toolbar_main);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this , drawerLayout, toolbar , 0b0, 0);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();

        navigationView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                BadgeDrawable badgeDrawable = BadgeDrawable.create(MainActivity.this);
                badgeDrawable.setVerticalOffset(25);
                badgeDrawable.setHorizontalOffset(15);
                BadgeUtils.attachBadgeDrawable(badgeDrawable, navigationView, null);
                navigationView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });
    }
}

Result:结果:

在此处输入图像描述

I want like this:我想要这样:

在此处输入图像描述

My question: Can I add Badge on hamburger navigation menu icon with BadgeDrawable ?我的问题:我可以在带有BadgeDrawablehamburger navigation菜单图标上添加Badge吗?

Implement DrawerArrowDrawable class and override the draw(canvas: Canvas) method.实现DrawerArrowDrawable class 并覆盖 draw(canvas: Canvas) 方法。 For detailed example guide visit this link https://android.pcsalt.com/add-badge-count-to-navigation-drawer-hamburger-icon-android/有关详细的示例指南,请访问此链接https://android.pcsalt.com/add-badge-count-to-navigation-drawer-hamburger-icon-android/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM