Android 在导航抽屉中使用ScrollView

Android 在导航抽屉中使用ScrollView,android,navigation-drawer,Android,Navigation Drawer,我的导航抽屉里有一个ListView和两个ImageButton。我的问题是,如果我的Listview扩展到屏幕之外,它将滚动显示所有Listview项目,而不是下面的两个ImageButton 为了解决这个问题,我尝试添加ScrollView来包装LinearLayout(@+id/drawer),但它给出了以下错误 是否可能有一个带有额外项目(除listview外)的NavDrawer和一个完整的滚动条 <FrameLayout android:id="@+id/fra

我的导航抽屉里有一个ListView和两个ImageButton。我的问题是,如果我的Listview扩展到屏幕之外,它将滚动显示所有Listview项目,而不是下面的两个ImageButton

为了解决这个问题,我尝试添加ScrollView来包装LinearLayout(@+id/drawer),但它给出了以下错误

是否可能有一个带有额外项目(除listview外)的NavDrawer和一个完整的滚动条

<FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ScrollView
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/texturebg2"
        android:layout_gravity="start">

    <LinearLayout
        android:id="@+id/drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/texturebg2"
        android:layout_gravity="start">

        <ListView
            android:id="@+id/list_slidermenu"
            android:layout_width="240dp"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:divider="@color/col3"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/menu_selector" />

        <LinearLayout
            android:id="@+id/extrabuttons"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:orientation="horizontal"
            android:gravity="center_horizontal|bottom"
            android:layout_marginTop="15dp"
            android:layout_marginBottom="15dp" >
            <ImageButton
                android:id="@+id/credit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription = "@string/credit"
                android:onClick="openCredit"
                android:src="@drawable/information"
                android:background="@drawable/mybutton2"
                android:padding="8dip"
                android:text="@string/credit" />

            <ImageButton
                android:id="@+id/exit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription = "@string/exit"
                android:onClick="closeApp"
                android:src="@drawable/ic_exit"
                android:background="@drawable/mybutton2"
                android:padding="8dip"
                android:layout_marginLeft="10dp"
                android:text="@string/exit" />
        </LinearLayout>
    </LinearLayout>
    </ScrollView>
只需将ListView保存在抽屉中,如:

<ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/col3"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/menu_selector" />


现在您的列表视图将滚动到此视图。

这对我来说似乎很熟悉,因为我不久前遇到了同样的问题。首先,将
列表视图
包装成
滚动视图
通常不是一个好主意(如果您使用的是Android SDK集成版Eclipse,可能会收到一条警告),因为
列表视图
本身就有一个滚动条

其次,问题是,由于布局定义的原因,
ListView
正在扩展到屏幕底部,这使您的两个图像无法访问

我解决了这个问题,将我想在
线性布局
中显示的内容包装成
垂直
方向,如下所示:

<LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:layout_marginTop="20dp" >

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:textStyle="italic"
    android:textAppearance="?android:attr/textAppearanceMedium" />

  <ListView
    android:id="@+id/chanlist_list"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1" 
    android:scrollbars="vertical" >
  </ListView>

  <Button
    android:id="@+id/btn_chanlist_close"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_marginTop="10dp"
    android:layout_gravity="center"
    android:onClick="btn_close"
    android:background="@drawable/botones"
    android:textColor="#FFFFFF"
    android:text="@string/btn_close" />          
</LinearLayout>


“问题”在于,布局将试图使屏幕与整个布局定义相适应,即如果布局中的元素太多,则
列表视图将在较短的空间内被压缩,从而难以滚动。尽量简化布局。

您可以使用
背景图像,因为它将扩展
包装内容
,或者您可以使用空图像,并使用
图像视图在代码中扩展其大小。getLayoutParams()。宽度=宽度
图像视图。getLayoutParams()。高度=高度

是否发布完整堆栈跟踪?为什么要在这里使用framelayout?已更新。。。framelayout是我的片段的容器。。。这就是我如何找到关于NavDrawer的所有教程。。。
LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.footer, null, true);

listView.addFooterView(View);
<ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/col3"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/menu_selector" />
<LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:layout_marginTop="20dp" >

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#FFFFFF"
    android:textStyle="italic"
    android:textAppearance="?android:attr/textAppearanceMedium" />

  <ListView
    android:id="@+id/chanlist_list"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1" 
    android:scrollbars="vertical" >
  </ListView>

  <Button
    android:id="@+id/btn_chanlist_close"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_marginTop="10dp"
    android:layout_gravity="center"
    android:onClick="btn_close"
    android:background="@drawable/botones"
    android:textColor="#FFFFFF"
    android:text="@string/btn_close" />          
</LinearLayout>