我需要在右上角的材料芯片上显示徽章。我怎样才能轻松做到呢?

San*_*iga 2 android android-chips material-components material-components-android

我正在尝试这种方式

    override fun draw(canvas: Canvas) {
        super.draw(canvas)
        val viewWidth = width.toFloat()
        val padding = chipEndPadding
        canvas.drawOval(viewWidth - padding, padding, viewWidth, padding + padding, paint)
    }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有出现,可能是因为chipDrawable。任何方法都可以实现这一点。此方法适用于所有其他视图,但不适用于芯片!

Gab*_*tti 5

您可以使用BadgeDrawable材料组件库提供的。

在您的布局中:

    <com.google.android.material.chip.Chip
        android:id="@+id/chip"
Run Code Online (Sandbox Code Playgroud)

然后:

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

            chip.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述