Badge | Badge with number | Badge with a maximum character count |
---|---|---|
Note: This component is still under development and may not support the full range of customization Material Android components generally support, for instance, themed attributes.
A BadgeDrawable
represents dynamic information such as a number of pending
requests in a BottomNavigationView
or
TabLayout
.
Create an instance of BadgeDrawable
by calling create(Context)
or
createFromAttributes(Context, AttributeSet, int, int)}
.
The approach used to add and display a BadgeDrawable
on top of its anchor view
depends on the API level:
In API 18+ (APIs supported by ViewOverlay)
- Add
BadgeDrawable
as a ViewOverlay to the desired anchor view. - Update the
BadgeDrawable
's coordinates (center and bounds) based on its anchor view using#updateBadgeCoordinates(View)
.
Both steps have been encapsulated in a util method:
BadgeUtils.attachBadgeDrawable(badgeDrawable, anchor);
In Pre API-18
- Set
BadgeDrawable
as the foreground of the anchor view'sFrameLayout
ancestor. - Update the
BadgeDrawable
's coordinates (center and bounds) based on its anchor view, relative to itsFrameLayout
ancestor's coordinate space.
Option 1: BadgeDrawable
will dynamically create and wrap the anchor view in a
FrameLayout
, then insert the FrameLayout
into the original anchor view
position in the view hierarchy. Same syntax as API 18+
BadgeUtils.attachBadgeDrawable(badgeDrawable, anchor);
Option 2: If you do not want BadgeDrawable
to modify your view hierarchy, you
can specify a FrameLayout
to display the badge instead.
* BadgeUtils.attachBadgeDrawable(badgeDrawable, anchor, anchorFrameLayoutParent);
BadgeDrawable
provides four pre-packaged gravity modes that control how the
badge aligns with its anchor view. By default (TOP_END
) badge aligns with the
top and end edges of the anchor (with some offsets). The other options are
TOP_START
, BOTTOM_START
and BOTTOM_END
.
By default, BadgeDrawable
is aligned with the top and end edges of its anchor
view (with some offsets). Call setBadgeGravity(int)
to change it to one of the
other supported modes. To adjust the badge's offsets relative to the anchor's
center, use setHoriziontalOffset(int)
or setVerticalOffset(int)
Feature | Relevant attributes |
---|---|
Color | app:backgroundColor app:badgeTextColor |
Label | app:number |
Label Length | app:maxCharacterCount |
Badge Gravity | app:badgeGravity |
BadgeDrawable
provides a getter for its content description, which is based on
the number (if any) displayed. Users should specify content description:
setContentDescriptionNumberless(CharSequence)
setContentDescriptionQuantityStringsResource(@StringRes)