我用ShowcaseView库的应用程序的教程。 我需要去抽屉式导航切换按钮(又名“汉堡按钮”)的引用:
我使用工具栏的动作条,我不知道如何得到这个按钮。 我用这通常切换抽屉:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
toggleDrawer(Gravity.START);
}
}
但是当我使用设备监视器,使屏幕的快照,有ID为“家”没有意见。
有什么建议?
在原来的ActionBar
,两个View
在你的左边显示常用的是向上 View
和家庭 View
。 向上 View
是通常显示“汉堡包”图标的按钮,而家庭 View
显示的应用程序图标。 事情已经与改变Toolbar
类。 不再有一个默认的View
与android.R.id.home
ID,虽然设置Toolbar
为支撑ActionBar
仍会触发的onOptionsItemSelected()
与相应的项目ID的时候View
点击的问题是。
当前Toolbar
类现指最多 View
内部的导航按钮 View
,并创建一个View
动态。 我用两种不同的方法去一个参考-一个遍历一个Toolbar
的孩子View
S,并且在使用反射一个Toolbar
类。
对于迭代法,您所设置的切换后,但你已经添加的任何其他之前ImageButton
S到Toolbar
,该导航按钮 View
是唯一ImageButton
的儿童Toolbar
,你可以得到像这样:
private ImageButton getNavButtonView(Toolbar toolbar)
{
for (int i = 0; i < toolbar.getChildCount(); i++)
if(toolbar.getChildAt(i) instanceof ImageButton)
return (ImageButton) toolbar.getChildAt(i);
return null;
}
如果你需要的应用程序图标的参考View
-即对应于旧居 View
-您可以使用类似的方法寻找一个ImageView
。
反射方法,在另一方面,可以在任何时间所使用的后View
已在被设置Toolbar
。
private ImageButton getNavButtonView(Toolbar toolbar) {
try {
Class<?> toolbarClass = Toolbar.class;
Field navButtonField = toolbarClass.getDeclaredField("mNavButtonView");
navButtonField.setAccessible(true);
ImageButton navButtonView = (ImageButton) navButtonField.get(toolbar);
return navButtonView;
}
catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
再次,可以使用用于图标的类似方法View
,检索代替"mLogoView"
Field
。
在XML文件中只添加工具栏/布局的最左边的视图,并在您的展示目标使用此视图