BadgeView
描述:控件實(shí)現(xiàn)簡單,使用,功能較全面,邏輯簡單,大家完全可以拿這用,不用造輪子,如果大家有其他需求也可以給我提。
使用說明:氣泡提示消息數(shù)量等。
功能描述: 可以自定義氣泡背景顏色、顯示文本(字符串)、邊框顏色、邊框?qū)挾?、在界面中顯示的位置
實(shí)例圖:

使用說明
使用方式一:布局中使用
第一步:布局用BadgeView將目標(biāo)view進(jìn)行包裹,并定義相關(guān)屬性
<com.chinaway.android.view.BadgeView
android:id="@+id/tag_process"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingTop="4dp"
app:badgeAnchorPosition="AnchorRightTop"
app:badgeBgColor="@color/NC10"
app:badgeBorderColor="@color/white"
app:badgeBorderWidth="2dp"
app:badgeMarginHorizon="16dp"
app:badgeTextColor="@color/white"
app:badgeTextSize="10sp">
<TextView
android:id="@+id/tv_processing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawablePadding="10dp"
android:drawableTop="@drawable/ic_home_progress"
android:gravity="center_horizontal"
android:text="@string/label_processing"
android:textColor="@color/NC4"
android:textSize="@dimen/font_size_12_SP" />
</com.chinaway.android.view.BadgeView>
第二步:使用
//找到BadgeView
BadgeView badgeView = (BadgeView) findViewById(R.id.tag_solve);
//設(shè)置顯示文本
badgeView.setBadgeText("99+");
使用方式二:動態(tài)添加徽章控件
//動態(tài)添加
TextView button = findViewById(R.id.button);
BadgeView.build(button)
.setBadgeAnchorPosition(BadgeView.ANCHOR_LEFT_TOP)
.setBadgeBgcolor(getResources().getColor(android.R.color.holo_green_light))
.setBadgeBordercolor(getResources().getColor(android.R.color.white))
.setBorderWidth(2)
.setMarginHorizon(8)
.setMarginVertical(2)
.setBadgeTextcolor(getResources().getColor(android.R.color.holo_red_light))
.setBadgeTextSize(14)
.setPaddingH(12)
.setPaddingV(7)
.showBadge("啦");
控件屬性說明
<declare-styleable name="BadgeView">
<!--顯示文本-->
<attr name="badgeText" format="string" />
<!--文本字體大小-->
<attr name="badgeTextSize" format="dimension" />
<!--文本顏色-->
<attr name="badgeTextColor" format="color" />
<!--邊框?qū)挾?->
<attr name="badgeBorderWidth" format="dimension" />
<!--邊框顏色-->
<attr name="badgeBorderColor" format="color" />
<!--氣泡背景色-->
<attr name="badgeBgColor" format="color" />
<!--徽章顯示的位置-->
<attr name="badgeAnchorPosition">
<enum name="AnchorLeftTop" value="0" />
<enum name="AnchorLeftBottom" value="1" />
<enum name="AnchorRightTop" value="2" />
<enum name="AnchorRightBottom" value="3" />
</attr>
<!--徽章在水平方向的margin-->
<attr name="badgeMarginHorizon" format="dimension" />
<!--徽章在垂直方向的margin-->
<attr name="badgeMarginVertical" format="dimension" />
<!--徽章內(nèi)部水平padding-->
<attr name="badgePaddingHorizon" format="dimension" />
<!--徽章內(nèi)部垂直padding-->
<attr name="badgePaddingVertical" format="dimension" />
</declare-styleable>
特別說明:當(dāng)只想顯示一個氣泡,不顯示文本內(nèi)容的時候,badgeText傳入空格就好,傳入 null則代表不繪制徽章
app:badgeText=" "
badgeAnchorPosition徽章顯示位置說明
為了方便計(jì)算徽章在布局中的位置
特別提供了:左上、右上、左下、右下 ,四個方位
其次提供:badgeMarginHorizon、badgeMarginVertical 來控制在水平方向和垂直方向的margin,其實(shí)就是相對于 badgeAnchorPosition 這個方位值的x、y方向的偏移量 ,這個偏移量并Android坐標(biāo)上的偏移,二是相對于badgeAnchorPosition的偏移
例如:
app:badgeAnchorPosition="AnchorRightTop"
app:badgeMarginHorizon="16dp"
app:badgeMarginVertical="2dp"
說明:代表將徽章放到該view的右上角,再距離右邊16dp(也就是往左16dp),再往下2dp的位置
源碼地址: BadgeView-master