如何在NavigationDrawer的底部设置ListView?

时间:2018-07-14 13:24:36

标签: android listview navigation-drawer drawerlayout android-navigation-drawer

我正在开发一个应用程序,但有一个问题,我无法在DrawerLayout的底部显示ListView,这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:minWidth="25px"
        android:minHeight="25px">
        <android.webkit.WebView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/webView" />
    </LinearLayout>
    <ListView
        android:id="@+id/navList"
        android:layout_width="180dp"
        android:layout_height="match_parent"
        android:choiceMode="singleChoice"
        android:layout_gravity="left|start"
        android:background="#ffffff" />
</android.support.v4.widget.DrawerLayout>

这是当前的样子:

example

我尝试将ListView设置在RelativeLayout内,但根本不起作用(例如,虽然以前我自己尝试过,但我使用了当前答案之一)。这就是发生的情况:

image2

我也试图设置ImageView只是为了创建一些空间,但是在两种情况下,代码都破坏了代码。

这就是我想要做的:

example

有人知道吗?谢谢。

2 个答案:

答案 0 :(得分:1)

要使其正常运行,需要进行一些更改:

首先创建一个Fragment类:

public class BlankFragment : Fragment
{
    public BlankFragment()
    {
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        // Inflate the layout for this fragment
        return inflater.Inflate(Resource.Layout.BlankFragment, container, false);
    }
}

第二,用XML中的片段替换ListView:

<fragment
    android:name="your package name.BlankFragment"
    android:layout_width="180dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"/>

最后:

将ListView移至片段XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="180dp"
    android:layout_height="match_parent"
    android:background="#e00808"
    tools:context=".BlankFragment">

    <!-- TODO: Update blank fragment layout -->

    <ListView
        android:id="@+id/navList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:choiceMode="singleChoice"
        android:layout_alignParentBottom="true"
        android:background="#ffffff" />

</RelativeLayout>

此外,您需要将android:layout_height="match_parent"更改为android:layout_height="wrap_content"。然后结果将低于预期。

img

我在Xamarin论坛上得到了robbit的大力支持:

https://forums.xamarin.com/discussion/129313/how-to-set-a-listview-at-the-bottom-of-a-navigationdrawer

您可以检查他的答案!谢谢robbit

答案 1 :(得分:0)

您应该添加LinearLayout作为DrawerLayout的子元素,其宽度和高度为match_parent。然后将您的ListView放在该LinearLayout的底部。像下面这样。我不知道您想要的布局多么精确,但是下面的代码将列表视图放在LinearLayout

的底部
<?xml 
 version="1.0"encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.9"
        android:minHeight="25px"
        android:minWidth="25px"
        android:orientation="vertical">

        <android.webkit.WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <ListView
        android:id="@+id/navList"
        android:layout_width="180dp"
        android:layout_height="0dp"
        android:layout_gravity="left|start"
        android:layout_weight="0.1"
        android:background="#ffffff"
        android:choiceMode="singleChoice" />

</LinearLayout>
</android.support.v4.widget.DrawerLayout>