在使用的时候,我遇到了,添加BadgeView之后目标控件无法显示而BadgeView正常显示的情况,我的目标控件是ImageView,本来以为是ImageView的问题,但又试了几个与这个ImageView相关的TextView、Linearlayout,发现这三种View都无法显示目标控件,又尝试了将ImageView类型改成View类型,结果仍然是无法显示目标控件。(这种尝试的出发点是想到,在实现OnClickLinear借口时如果既有TextView又有Button类型时,会报错,应该统一成Button或者View)。我认为是BadgeView写的有问题,又在其他页面的View中尝试了一下,发现完全是正确显示的,说明我的badgeView是没有问题的。所以我认为是由于位置的原因,我的这个ImageView附近的控件都不能实现。由于代码太多,我便将相关代码放到了另一个Activity中进行修改。在另一个Activity中刚开始也有这个问题,后来我观察了我的xml文件,发现,这几个有问题的控件,我在layout_height或者是layout_width中写了0dp,因为用的是权重weight来控制显示比例的,在某本书上学到可以直接写0dp。之后我将0dp修改为match_parent后,问题迎刃而解,原来根源在这里。后来我想了下,应该是0dp导致目标控件显示空间没有了,因为期间我还尝试在各控件中加上颜色来区别到底是哪里出了问题,事实上通过颜色显示可以看出,当layout_height或者layout_width为0dp时,整个目标空间是消失的,而BadgeView 显示在目标空间的下一层。至此,问题解决。总结一句话就是,layout_height和layout_width不能是0dp。
附上源代码:
BadgeView badgeview = new BadgeView(MainActivity.this,target);
badgeview.setText(""+count);
badgeview.setTextSize(8.5f);
badgeview.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
badgeview.setTextColor(Color.WHITE);
badgeview.show();