带有可滚动页脚的Android导航抽屉(菜单)

时间:2014-06-04 19:54:12

标签: android menu navigation-drawer

我想在Android中实现导航抽屉(左侧菜单)。

菜单顶部应有一个项目列表,底部有两个按钮。

我采取了两种方法:

1)通过

在页面中添加页脚
mDrawerList.addFooterView(footer);

使用此解决方案,页脚就像列表中的另一项。因此,如果列表中的项目很少,则页脚不会显示在底部,实际上它位于最后一个列表项的正下方。

2)将相对布局应用于左侧组件,如:

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

  <!-- The main content view -->
  <FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

  <!-- The navigation drawer -->
  <RelativeLayout
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start">

    <ListView
      android:id="@+id/left_drawer_list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:choiceMode="singleChoice"
      android:divider="@android:color/white"
      android:dividerHeight="1dp"
      android:background="@color/black"/>

    <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_margin="20dp">

      <Button
        android:id="@+id/dashboard_iv_profile_image"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:text="Test"/>

    </RelativeLayout>

  </RelativeLayout>

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

但是,如果未显示所有菜单列表项,则页脚位于列表项上方,隐藏最后一项。

如何实现正确的解决方案?

我是否必须使用ScrollView?

谢谢!

已编辑1

使用第二种方法和left_drawer RelativeLayout中的android:layout_above,我得到了类似于拍摄的照片:

enter image description here

1 个答案:

答案 0 :(得分:2)

在我看来,您的布局存在问题。您不应该需要两个RelativeLayout

尝试这样的事情:

<RelativeLayout
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">

<ListView
  android:id="@+id/left_drawer_list"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:choiceMode="singleChoice"
  android:divider="@android:color/white"
  android:dividerHeight="1dp"
  android:layout_above="@+id/dashboard_iv_profile_image"
  android:background="@color/black"/>

  <Button
    android:id="@+id/dashboard_iv_profile_image"
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:layout_alignParentBottom="true"
    android:layout_margin="20dp"
    android:text="Test"/>

</RelativeLayout>

注意在ListView中添加layout_above并将alignParentBottom移动到Button