在操作栏项目上放置徽章

时间:2015-03-14 17:11:36

标签: java android android-actionbar

我的应用程序顶部带有一个操作栏,有两个按钮:一个在左侧(汉堡按钮),允许打开左侧导航抽屉,另一个在右侧,允许打开右侧抽屉。我的问题是在图标上放置一个徽章,但我不知道如何获得对左侧图标的引用来修改它,因为它是Android默认图标,我不知道如何添加徽章。有什么建议吗?提前致谢

3 个答案:

答案 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。您应该在使用之前检查您的视图树。