繁体   English   中英

Android构建带有图标的迷你导航抽屉

[英]Android build mini navigation drawer with Icons

我想在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单独使用。

因此,您具有上面的MiniDrawer View 现在,您只需要将其添加到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

在该库的文档中,开发人员提到您可以锁定抽屉 您可以尝试一下,看看是否阻止它打开?

result = new DrawerBuilder()...
...
//get the DrawerLayout from the Drawer
DrawerLayout drawerLayout = result.getDrawerLayout();
//do whatever you want with the Drawer. Like locking it. 
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

如果LOCK_MODE_CLOSED不起作用,请尝试使用此处定义的其他锁定模式,并告诉我们会发生什么!

您可以通过这种方式为抽屉创建视图,尝试使用ActionsContentView

<shared.ui.actionscontentview.ActionsContentView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/divider"
        app:actions_layout="@layout/actions"
        app:actions_spacing="0dp"
        app:content_layout="@layout/content"
        app:shadow_drawable="@drawable/shadow"
        app:shadow_width="8dip"
        app:spacing="64dip"
        app:spacing_type="right_offset" />

或尝试使用Partial SlidingPaneLayout

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM