如何在按钮上方添加徽章



在我的MainActivity类中,我有这个按钮:

<Button
android:id="@+id/target"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/speak"
android:layout_marginTop="20dp"
android:background="@drawable/button_red"
android:text="@string/target" />

我现在想使用Material Design添加一个编号为1的徽章(请参阅文档(。

我就是这样尝试的:

public void setBadge() {
BadgeDrawable badgeDrawable =  BadgeDrawable.create(MainActivity.this);
badgeDrawable.setNumber(1);
BadgeUtils.attachBadgeDrawable(badgeDrawable, findViewById(R.id.target));
}

但是我得到的是错误

"com.google.android.material.BadgeDrawable(com.google.aandroid.material_badge.BadgeDrawable,android.view.view,android.widget.FrameLayout("中的"附件BadgeDrawable"无法应用于"(com.google.android.mamaterial.badge.badge Drawable,android.view.view(">

如果您在带有<18 API这可能起作用;

在XML中,用FrameLayout包装按钮;

<FrameLayout
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="HELLO"/>
</FrameLayout>

在您的活动中;

//I've used post to eliminate race condition between the button and its badge.
button.post(() -> {
BadgeDrawable badgeDrawable =  BadgeDrawable.create(MainActivity.this);
badgeDrawable.setNumber(1);
//Note that there is a third argument which is our FrameLayout
BadgeUtils.attachBadgeDrawable(badgeDrawable, findViewById(R.id.button), findViewById(R.id.frame));
});

相关内容

  • 没有找到相关文章

最新更新