ListView与另一个布局重叠

时间:2015-12-27 15:46:14

标签: android xml listview navigation-drawer

早上好。我有这样的布局:

<android.support.v4.widget.DrawerLayout

  <android.support.design.widget.CoordinatorLayout
    ...
  </android.support.design.widget.CoordinatorLayout>

  <android.support.design.widget.NavigationView
    android:id="@+id/main_drawer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:itemTextColor="@color/jet"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/action_menu" />

  <ListView
      android:id="@+id/navList"
      android:layout_width="200dp"
      android:layout_height="match_parent"
      android:layout_gravity="left|start"
      android:background="@color/chalk" />

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

然后,在我的Activity上,我填充了ListView,如下所示:

String[] osArray = {"CERRAR SESIÓN", "ACERCA DE"};
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
    listView.setAdapter(arrayAdapter);

我的问题是我用作抽屉标题的布局与ListView重叠。我也试过给ListView一个marginTop,但是虽然它在Android Studio中很明显(显然),但在运行代码时它什么都解决不了。

以防万一,这是我用作抽屉标题的布局:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/header_height"
    android:background="@color/accent"
    android:gravity="bottom"
    android:orientation="vertical"
    android:padding="@dimen/header_left_padding"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

<TextView
    android:id="@+id/username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/user_name"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
    android:textStyle="bold" />

<TextView
    android:id="@+id/email"
    style="@style/Widget.AppCompat.Spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/user_email"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

</LinearLayout>

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用

  

Theme.Appcompat

而不是线性布局的主题叠加

答案 1 :(得分:0)

我认为你误解了NavigationView以及DrawerLayout的旧设计模式。在旧时代,我们必须使用listView来填充抽屉菜单,但创建NavigationView后,我们现在将我们想要的内容放入xml文件中。所以你的布局应该是:

<android.support.v4.widget.DrawerLayout

  <android.support.design.widget.CoordinatorLayout
    ...
  </android.support.design.widget.CoordinatorLayout>

  <android.support.design.widget.NavigationView
    android:id="@+id/main_drawer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:itemTextColor="@color/jet"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/action_menu" />



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

并且您必须通过这两个xml文件填充抽屉菜单

app:headerLayout="@layout/drawer_header"
app:menu="@menu/action_menu"

您可以使用@layout/drawer_header设计标题菜单,使用action_menu创建抽屉菜单的列表项。