ListView和ScrollView一起不起作用

时间:2014-03-08 10:14:49

标签: android listview android-listview scrollview

我在一项活动中有ListViewScrollView。现在,问题是ListViewScollView无法协同工作。我有很多活动控件,所以我需要使用ListView

如果ScrollView在那里,那么ListView的高度会降低,如图所示。

请帮我防止这个问题。 Problem with ListView and ScrollView together

我的代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp" >

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

        <TextView
            android:id="@+id/tvRQPoint"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:textColor="@color/green"
            android:textSize="32sp" />

        <TextView
            android:id="@+id/tvRQQText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/questiontext"
            android:textColor="@color/blue"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/tvRQQuestion"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp" />

        <ImageView
            android:id="@+id/imgRQImage"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dp"
            android:contentDescription="@string/imgdesc" />

        <ListView
            android:id="@+id/lvRQOptions"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:divider="#b5b5b5"
            android:dividerHeight="1dp" />

        <TextView
            android:id="@+id/tvRQAnswer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp" />

        <Button
            android:id="@+id/btnRQNext"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:text="@string/next" >
        </Button>

        <Button
            android:id="@+id/btnRQEndTest"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:background="@drawable/blue_bg"
            android:text="@string/endtest"
            android:textColor="@color/white" >
        </Button>
    </LinearLayout>

</ScrollView>

4 个答案:

答案 0 :(得分:0)

永远不要在ListView内使用ScrollViewListView本身已经有一个内置滚动,所以你应该使用它,因为你使用的方法违背了Android的设计。

如果您无法删除ScrollView,则可能应考虑简化设计或以其他方式重新设计。

答案 1 :(得分:0)

您可以做的一件事是只使用listView并将上述元素添加为标题视图,将以下元素添加为页脚视图。

列表视图具有以下属性:      addHeaderView(View view);      addFooterView(查看视图)

您可以在设置列表适配器之前设置

答案 2 :(得分:0)

嗨,因为@nKn表示在ScrollView中使用ListView并不好,如果有效,它也会提供不好的性能,ListView有自己的滚动属性,你不需要在其中使用scrollview,为listview和其他东西创建单独的布局按照你想要的方式对齐布局。对我来说效果非常好。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:overScrollMode="ifContentScrolls"
android:scrollbarStyle="insideOverlay"
android:scrollbars="vertical" >

<RelativeLayout
    android:id="@+id/listContainingLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/buttonsLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:overScrollMode="ifContentScrolls"
    android:scrollbarStyle="insideOverlay"
    android:scrollbars="vertical" >

    <ListView
        android:id="@id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" >
    </ListView>
</RelativeLayout>

<LinearLayout
    android:id="@+id/buttonsLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button1" />

    <ImageButton
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:src="@drawable/button2" />

    <ImageButton
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button3" />
</LinearLayout>

我建议您根据优先级对齐按钮,如果您希望按钮固定在屏幕上,则可以使用上面的格式,但如果您希望按钮位于列表后面,则对齐 buttonsLayout < EM>以下 listContainingLayout

希望它有所帮助,干杯!...

答案 3 :(得分:-1)

ListView已经具有滚动功能。这就是ScrollView中出现问题的原因。但是尝试给你的ListView提供硬编码宽度。愿这解决问题

<ListView android:id="@+id/lvRQOptions" android:layout_width="fill_parent" android:layout_height="300dp" android:layout_marginTop="8dp" android:divider="#b5b5b5" android:dividerHeight="1dp" />