未显示 MaterialButton 上的 BadgeDrawable
Posted
技术标签:
【中文标题】未显示 MaterialButton 上的 BadgeDrawable【英文标题】:BadgeDrawable on MaterialButton not shown 【发布时间】:2020-04-10 02:30:33 【问题描述】:我尝试向 MaterialButton 添加一个简单的 BadgeDrawable,但没有显示徽章。
我在 build.gradle 中尝试过以下版本: 'com.google.android.material:material:1.2.0-alpha02' 和 'com.google.android.material:material:1.1.0-alpha06' 。
代码或多或少:
private void addBadgeFor(MaterialButton button, int count)
if (count > 0)
final BadgeDrawable badge = BadgeDrawable.create(getContext());
badge.setNumber(count);
badge.setBackgroundColor(getActivity().getResources().getColor(R.color.badgeBackground));
badge.setBadgeTextColor(getActivity().getResources().getColor(R.color.badgeText));
BadgeUtils.attachBadgeDrawable(badge, button, null);
我试过有/没有颜色。 minSdk 为 24,目标为 29。
有谁知道 MaterialButton 是否支持 BadgeDrawable?
【问题讨论】:
【参考方案1】:您可以在布局中使用:
<FrameLayout
android:id="@+id/layout"
android:clipChildren="false"
android:clipToPadding="false">
<com.google.android.material.button.MaterialButton
android:id="@+id/button"
../>
</FrameLayout>
然后在您的代码中,您可以将BadgeDrawable
应用于:
MaterialButton button = findViewById(R.id.button);
button.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
@Override
public void onGlobalLayout()
BadgeDrawable badgeDrawable = BadgeDrawable.create(MainActivity.this);
badgeDrawable.setNumber(9);
BadgeUtils.attachBadgeDrawable(badgeDrawable, button, findViewById(R.id.layout));
button.getViewTreeObserver().removeOnGlobalLayoutListener(this);
);
【讨论】:
以上是关于未显示 MaterialButton 上的 BadgeDrawable的主要内容,如果未能解决你的问题,请参考以下文章
无法更改 MaterialButton 上的背景颜色而不更改 colorAccent
android material design 风格组件(MaterialButton,MaterialButtonToggleGroup,Chip,ChipGroup)大汇总.
Android iconGravity 不适用于具有 CircularProgressIndicator 的 MaterialButton