在 RadioButton 上使用 BadgeView 顯示消息數量後,RadioButton 原有的 drawableTop 圖標消失不顯示。布局屬性設置了 android:button="@null" 並用 drawableTop 承載選擇器圖標。
BadgeView 內部通過將目標 View 包裝在 FrameLayout 中並添加徽標 View 實現。當目標 View 為 RadioButton 且使用 drawableTop 時,包裝過程可能導致繪制層級遮蓋或布局參數丟失。
BadgeView 的自動包裝。QBadgeView(GitHub),支持任意 View 且不影響原背景繪制。BadgeView 源碼並給出繼承修復方案。QBadgeView badge = new QBadgeView(context);
badge.bindTarget(radioButton)
.setBadgeNumber(1)
.setGravityOffset(12, -8, true); // 微調位置
避免直接在複合繪制的 RadioButton 上使用原版 BadgeView,改用成熟庫或自定義佈局可完美解決圖標消失問題。