我想在android中建立一个固定的迷你导航抽屉。将始终可见,且不可扩展,仅带有图标。
类似于https://github.com/mikepenz/MaterialDrawer迷你抽屉。
我尝试使用他的库,但是我不知道如何修复它。
这是我的代码:
private Drawer result = null;
private MiniDrawer miniResult = null;
result = new DrawerBuilder()
.withActivity(this)
.withToolbar(toolbar)
.withTranslucentStatusBar(false)
.addDrawerItems(
new PrimaryDrawerItem().withName("1").withIcon(FontAwesome.Icon.faw_home).withIdentifier(1),
new PrimaryDrawerItem().withName("2").withIcon(FontAwesome.Icon.faw_home).withBadge("22").withBadgeStyle(new BadgeStyle(Color.RED, Color.RED)).withIdentifier(2).withSelectable(false),
new DividerDrawerItem(),
new ToggleDrawerItem().withName("3").withIcon(FontAwesome.Icon.faw_home).withChecked(true).withOnCheckedChangeListener(onCheckedChangeListener)
) // add the items we want to use with our Drawer
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
if (drawerItem instanceof Nameable) {
Toast.makeText(MainActivity.this, ((Nameable) drawerItem).getName().getText(MainActivity.this), Toast.LENGTH_SHORT).show();
}
return false;
}
})
.withGenerateMiniDrawer(true)
.withSavedInstance(savedInstanceState)
// build only the view of the Drawer (don't inflate it automatically in our layout which is done with .build())
.buildView();
miniResult = result.getMiniDrawer();
View view = miniResult.build(this);
最佳答案
从正常用法开始,总有一个“普通”抽屉(通过DrawerLayout
),而在您的情况下,MiniDrawer
您只想使用MiniDrawer
并将其添加到您的View
层次结构中。
正如您已经正确计算出的那样,MiniDrawer
是通过普通的DrawerBuilder
填充的,因为它带有与添加到抽屉中的元素进行交互的所有方法。
因为您的用例很特殊,所以没有单独的MiniDrawer
扩展。
因此,您具有上面View
的MiniDrawer
。现在,您只需将其添加到您的Activity
中。
我建议您的布局看起来像这样:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Place your content here -->
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
因此,在您的代码中,您得到了“容器”
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(view, 0); //view is the view of your MiniDrawer
只是为了改善您的代码并删除不必要的内容。您可以删除
.withToolbar(toolbar)
.withTranslucentStatusBar(false)
因为如果您只使用
MiniDrawer
,则没有必要