我使用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
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));
这两行代码适用于我:
mDrawerToggle.setDrawerIndicatorEnabled(false); //disable "hamburger to arrow" drawable
mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_drawer); //set your own
然后叫这个:
mDrawerToggle.syncState();
您可以将工具栏用作独立模式,这意味着您不应该将工具栏用作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)。 框选(和框选墙) 可框选多个模型。长按可选择框选墙,用于选择多个墙体。 画墙(和画矩形墙) 绘制墙体。长按可选择画矩形墙。 给墙加点 给整面的墙体添加锚点,给墙体分段。 擦除 删除墙体。
我想为标题“你好”中的文本设置一个自定义字体。怎么做?