我的应用程序顶部带有一个操作栏,有两个按钮:一个在左侧(汉堡按钮),允许打开左侧导航抽屉,另一个在右侧,允许打开右侧抽屉。我的问题是在图标上放置一个徽章,但我不知道如何获得对左侧图标的引用来修改它,因为它是Android默认图标,我不知道如何添加徽章。有什么建议吗?提前致谢
答案 0 :(得分:0)
您始终可以为操作栏创建自己的视图。这样,您不仅可以自定义所需的图像,还可以根据需要进行更多操作。
使用setCustomView()
类中的ActionBar
来执行此操作。
答案 1 :(得分:0)
我之前使用帮助器Badge
类实现了这一点。这取决于Dave Smith的textdrawable库在徽章中绘制文字。将TextDrawable
课程放在Badge
课程附近。使用方法:
Drawable icon = getResources().getDrawable(R.drawable.ic_launcher);
Badge badge = new Badge(context);
badge.setText("99+");
badge.setBadgeColor(Color.YELLOW);
badge.setTextColor(Color.WHITE);
badge.setTextSize(10);
badge.setBadgePosition(Badge.Position.TOP_RIGHT);
badge.setBadgeMargin(10, 10, 10, 10);
badge.setBadgePadding(0, 15, 15, 0);
badge.setBadgeShape(new OvalShape());
badge.enableBorder();
badge.setBorderWidth(4);
badge.setBorderColor(Color.BLACK);
actionBar.setIcon(badge.applyTo(icon));
背后的关键思想是将给定的drawable,shape drawable和text drawable组合在单层drawable中。因此徽章可以应用于任何可绘制的。
以gist的形式提供。希望有所帮助。
答案 2 :(得分:0)
如何获取对左侧图标的引用
您可以在活动的“视图树”中找到该视图。以下代码在nexus5-android5.0上验证,使用suopport-v7 actionBar。
ViewGroup actionbarView = (ViewGroup) findViewById(R.id.action_bar);
for (int i = 0; i < actionbarView.getChildCount(); i++) {
// make toggle drawable center-vertical, you can change whatever layoutparameters as you wish
if (actionbarView.getChildAt(i) instanceof ImageButton) {
// That is just the left drawer icon, an instance of ImageButton.
View drawerView = actionbarView.getChildAt(i);
// add your badge to the View
}
}
它可能会有所不同取决于您设置ActionBar的方法,例如扩展ActionBarActivityor或仅扩展目标android3.0及以上时的Activity。您应该在使用之前检查您的视图树。