如何在导航抽屉菜单中添加按钮?

6
我想在我的导航抽屉菜单中添加一个按钮,就像这样:
期望结果:
我尝试使用actionLayout参数来实现这一点,但我似乎只能使用右侧的一些空间,而不能使用整个宽度:
当前结果:
标题似乎占据了左侧的空间。 但是我想添加一个具有完整宽度的按钮,就像第一张图片中那样。
我的当前代码:
...

<item
                    android:id="@+id/nav_login"
                    android:title=""
                    app:actionLayout="@layout/button_login"
                    app:showAsAction="ifRoom"/>

...

button_login.xml

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:background="#0000ff"
    android:text="Login"
    android:textColor="#ffffff"
    android:layout_height="match_parent" />

我通过约束布局的帮助解决了这个问题在此处查看 - Farshad Molazeinali
2个回答

3

Action view在抽屉中旨在在菜单项右侧显示这个“小”附加视图,因此它将被限制在大小上。

您可以将所需的按钮添加为类似以下内容的页脚:

<android.support.design.widget.NavigationView
    android:id="@+id/drawer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:menu="@menu/drawer">
    <Button
       android:id="@+id/footer_item_1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="bottom"
       android:text="Footer Button 1" />
</android.support.design.widget.NavigationView>

请注意,您可以将任何内容作为子元素,如果想要更多的视图-只需添加LinearLayout并将所有附加视图作为其子元素放置。

1
谢谢。但我不想将按钮用作页脚,而是作为菜单中的常规项目。 - Mamo1234

1

我的解决方案现在使用MaterialDrawer Library

我只是进行了一个快速测试,它解决了问题:

enter image description here

代码:

...
Drawer drawer = new DrawerBuilder()
                .withActivity(this)
                .withToolbar(findViewById(R.id.toolbar))
                .addDrawerItems(
                        new PrimaryDrawerItem().withName("Entry 1"),
                        new PrimaryDrawerItem().withName("Entry 2"),
                        new AbstractDrawerItem() {
                            @Override
                            public RecyclerView.ViewHolder getViewHolder(View v) {
                                return new RecyclerView.ViewHolder(v) {
                                };
                            }

                            @Override
                            public int getType() {
                                return 0;
                            }

                            @Override
                            public int getLayoutRes() {
                                return R.layout.button_a;
                            }

                            @Override
                            public Object withSubItems(List subItems) {
                                return null;
                            }

                            @Override
                            public Object withParent(IItem parent) {
                                return null;
                            }
                        },
                        new PrimaryDrawerItem().withName("Entry 3")
                )
                .build();
...

button_a.xml

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_width="match_parent"
        android:text="Login"
        android:layout_height="50dp"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接