1

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);
4

3 に答える 3

2

通常の使用法では、常に「通常の」ドロワー ( 経由DrawerLayout) があり、あなたの場合は を使用して階層に追加しMiniDrawerたいだけです。MiniDrawerView

すでに正しく把握しているように、これにはMiniDrawer法線を介して塗りつぶされDrawerBuilderます。これには、ドロワーに追加された要素と対話するすべてのメソッドが付属しているためです。

あなたのユースケースは特別なので、単独で「すぐに使える」膨張はありませんMiniDrawer

したがってViewMiniDrawer上記のものがあります。に追加するだけです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

于 2016-07-13T06:27:21.550 に答える
0

You can create view for your drawer like this way,try to use 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" />

OR try to use Partial SlidingPaneLayout

于 2016-07-13T05:25:22.070 に答える