Android 控件添加BadgeView后失去焦点问题

最近做一个项目,顶部类似于网易新闻一样动态添加n个菜单,下面是viewpager,滑动切换,需求是要在菜单上显示数字表示新闻数目,问题是使用第三方的BadgeView后点击切换失败。

经过调试发现,控件添加了BadgeView后再去获该控件 View checkView = mRadioGroup_content.getChildAt(j);是获取失败的。Log打印Id为-1.说明获取失败,并且获取到的为FrameLayout。

网上百度了好久,发现,BadgeView相当于在原控件基础上添加了一层Framelayout,而且我尝试给这个BadgeView seId()后获取还是失败的。

解决方法:

相当于投机取巧,转换了一下思维,首先用一个List来存储生成的控件,

Listlist=new ArrayList();

list.add(columnTextView);

  BadgeView badgeView = new BadgeView(this,columnTextView);  
                      badgeView.setText(scale.get(i).getUnreadCount());
                      badgeView.setTextSize(7);
                      badgeView.setId(i);
                      badgeView.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
                      badgeView.show();

然后在获取控件或者进行选中处理时,直接获取list中的值 list.get(j).setSelected(ischeck);就替代了 View checkView = mRadioGroup_content.getChildAt(j);

完美!over。


你可能感兴趣的:(Android)