Igo*_*pov 12 android android-support-library
我使用ShowcaseView库进行应用教程.我需要参考Navigation Drawer切换按钮(又名"汉堡按钮"):

我使用工具栏作为操作栏,我不知道如何获得此按钮.通常切换抽屉我用这个:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
toggleDrawer(Gravity.START);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用Device Monitor制作屏幕快照时,没有id为"home"的视图.
有什么建议?
Mik*_* M. 23
在原文中ActionBar,View左边常见的两个是Up View和Home View.该向上 View是通常显示"汉堡包"图标的按钮,而首页 View显示的应用程序图标.Toolbar课堂上的情况发生了变化.不再有默认View与android.R.id.homeID,虽然设置Toolbar为支撑ActionBar仍将火onOptionsItemSelected()与适当的项目标识的当View问题被点击.
当前Toolbar类现在将Up 指向View内部导航按钮 View,并View动态创建它.我使用了两种不同的方法来获取对它的引用 - 一个迭代一个Toolbar孩子View的,一个在Toolbar类上使用反射.
对于迭代方法,在设置了切换之后,但在添加任何其他ImageButtons 之前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;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要引用应用程序图标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;
}
Run Code Online (Sandbox Code Playgroud)
同样,类似的方法可以用于图标View,而不是检索"mLogoView" Field.
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |