当前位置: 首页 > 知识库问答 >
问题:

如何将Android工具栏上用于ActionBarToggle的汉堡图标替换为自定义绘图?

隗俊誉
2023-03-14

我使用Android 5.0中的新工具栏实现了一个基本的ActionBarDrawerToggle。

但是,我无法弄清楚如何更改提供的默认汉堡图标。从android留档中,它说“给定的活动将链接到指定的抽屉布局,工具栏的导航图标将设置为自定义抽屉...抽屉关闭时,此抽屉显示汉堡图标,抽屉打开时显示箭头。当抽屉打开时,它会在这两种状态之间进行动画处理。”

我目前有这一切与以下代码正常工作,但我想取代默认提供的汉堡包与我自己的绘图。

这是我当前的代码:

MainActivity.java

@InjectView(R.id.main_activity_toolbar)
Toolbar mToolbar;

@InjectView(R.id.main_activity_drawer_layout)
DrawerLayout mDrawerLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.main_activity);
    super.onCreate(savedInstanceState);

    setSupportActionBar(mToolbar);
    mToolbar.setNavigationIcon(R.drawable.navigation);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close) {
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            invalidateOptionsMenu();
        }
    };

    mDrawerLayout.setDrawerListener(mDrawerToggle);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
}

该行:

mToolbar.setNavigationIcon(R.drawable.navigation);

似乎不起作用。

这可能吗?谢谢!

操作栏切换文档-https://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html

共有3个答案

邵浩大
2023-03-14

ActionBarDrawerToggle的默认菜单可绘制为DrawerRowDrawable。

您可以将其子类化以添加自定义功能,如徽章,如下所示:

public class BadgedDrawerArrowDrawable extends DrawerArrowDrawable {

    /**
     * @param context used to get the configuration for the drawable from
     */
    public BadgedDrawerArrowDrawable(Context context) {
        super(context);

        setColor(context.getResources().getColor(R.color.colorAccent));
    }

    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);

        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);
        paint.setTextSize(60);
        canvas.drawText("!", canvas.getWidth() - 60, 25, paint);
    }
}

用法:

actionBarDrawerToggle.setDrawerArrowDrawable(new BadgedDrawerArrowDrawable(activity));
仲鸿风
2023-03-14

这两行代码适用于我:

mDrawerToggle.setDrawerIndicatorEnabled(false); //disable "hamburger to arrow" drawable
mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_drawer); //set your own

然后叫这个:

mDrawerToggle.syncState();
晋承运
2023-03-14

您可以将工具栏用作独立模式,这意味着您不应该将工具栏用作ActionBarDrawerToggle构造函数的一部分,您可以使用以下代码实现这一点:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, null,
                       R.drawable.appbar, R.drawable.appbar)

(注意工具栏实例如何没有被发送到ActionBarDrawerToggle构造函数)

此外,您应该手动为菜单充气

mToolbar = (Toolbar) findViewById(R.id.nav_toolbar);
mToolbar.inflateMenu(R.menu.base);

并删除setSupport portActionBar(mToolbar);代码行。

当然,您必须自己处理导航点击:

mToolbar.setOnMenuItemClickListener(new OnMenuItemClickListener() ...

然后,你可以这样打开抽屉:

drawerButton = (BadgeDrawerButton) findViewById(R.id.badge_drawer_button);
drawerButton.setOnClickListener(
                       new View.OnClickListener() {

                              @Override
                              public void onClick(View v) {
                                     mDrawerLayout.openDrawer(Gravity.LEFT);
                              }
                       });

希望这能有所帮助。

 类似资料:
  • 你知道我如何在Android/支持库中找到原来的汉堡包图标吗?(或如何显示) 在我的活动中 布局文件 styles.xml

  • 如何从工具栏中获取图标以更改为使用bbdd中看到的方法获得的新图标。问题是我无法访问更新活动的事件以更改图标。我尝试使用onPreareOptionsMenu方法,但无法使其工作。我无法通过将代码放入onStart来做到这一点,因为它告诉我菜单对象为空或无效。 我的活动由AppCompactActive扩展并通过AdapterView加载。当我返回片段对话框或从下一个活动开始时,我遇到了问题。 谢

  • 问题内容: 我正在这样做: 我想为标题“ hello”中的文本设置自定义字体。怎么做? 问题答案: Update 2018(kotlin版本) 像那样使用 旧帖子 要在工具栏中使用自定义标题,您需要做的就是记住,工具栏只是一个精美的ViewGroup,因此您可以像这样添加自定义标题: 这意味着您可以根据需要设置TextView的样式,因为它只是常规的TextView。因此,在您的活动中,您可以像这

  • 我想在中制作自定义搜索栏布局。我必须附上我想要的设计截图。检查操作栏设计。单击操作栏搜索图标在中打开自定义编辑文本。 我想做这样的动作栏布局。

  • 绘图工具栏 绘图工具栏位于主窗口左侧。绘图工具包括选择、框选(和框选墙)、画墙(和画矩形墙)、给墙加点和擦除功能。 名称 说明 选择 选择场景中任意对象(如模型、墙体),并对其进行编辑(快捷键为1)。 框选(和框选墙) 可框选多个模型。长按可选择框选墙,用于选择多个墙体。 画墙(和画矩形墙) 绘制墙体。长按可选择画矩形墙。 给墙加点 给整面的墙体添加锚点,给墙体分段。 擦除 删除墙体。

  • 我想为标题“你好”中的文本设置一个自定义字体。怎么做?