9

我有一个复杂的 xml 文件,我真的需要一个 ScrollView。请不要介意 ID,因为我已经更改了它们。这里的 ScrollView 不起作用。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true">


<LinearLayout
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:id="@+id/f_summary_LL">


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

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/black">


    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:layout_weight="1">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/BT1" 
                android:textColor="@color/white"
                android:textStyle="bold"         
                android:gravity="center_vertical|left" 
                android:paddingLeft="2dp" 
                android:textSize="13sp"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/BTS1" 
                android:textColor="@color/white"    
                android:paddingLeft="4dp"
                android:textSize="13sp"/>
    </LinearLayout>

    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"  
            android:gravity="center_vertical|right"
            android:layout_weight="1">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView7"
                android:textSize="13sp"
                android:textColor="@color/white"
                android:textStyle="bold" />
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/BT1CRR" android:textColor="@color/white" 
                android:paddingRight="8dp" android:textSize="13sp"
                android:paddingLeft="2dp"/>
    </LinearLayout>


</LinearLayout>

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">


    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text=""
            android:id="@+id/textView" android:textColor="@color/white"
            android:layout_weight="3" android:gravity="center"
            android:background="@drawable/table_header_cell_first" 
            android:textStyle="bold"
            android:textSize="13sp"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="R"
            android:id="@+id/textView1" android:textColor="@color/white" 
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold" android:layout_weight="1"
            />
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="B"
            android:id="@+id/textView2" android:textColor="@color/white" 
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textStyle="bold" android:textSize="13sp"
            android:layout_weight="1"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="4s"
            android:id="@+id/textView3" android:textColor="@color/white" 
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"
            android:layout_weight="1"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="6s"
            android:id="@+id/textView4" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="SR"
            android:id="@+id/textView5" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"/>

</LinearLayout>


<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
    <ListView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/listView1"/>
</LinearLayout>




<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/black"
        android:baselineAligned="false">


    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:layout_weight="1"
            android:baselineAligned="false">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/BT2" android:textStyle="bold" 
                android:textColor="@color/white"
                android:gravity="center_vertical|left" android:paddingLeft="2dp" 
                android:textSize="13sp"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/BTS2" android:textSize="13sp" 
                android:textColor="@color/white"
                android:paddingLeft="4dp"/>
    </LinearLayout>


</LinearLayout>

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text=""
            android:id="@+id/textViewBH" android:textColor="@color/white"
            android:layout_weight="3" android:gravity="center"
            android:background="@drawable/table_header_cell_first" 
            android:textSize="13sp"
            android:textStyle="bold"/>

    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="O"
            android:id="@+id/textViewBOH" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold" android:clickable="false"
            />
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="M"
            android:id="@+id/textViewBMH" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textStyle="bold" android:textSize="13sp"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="R"
            android:id="@+id/textViewBRH" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="W"
            android:id="@+id/textViewBWH" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"/>
    <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text=""
            android:id="@+id/textViewBECOH" android:textColor="@color/white" 
            android:layout_weight="1"
            android:gravity="center" android:background="@drawable/table_header_cell"
            android:textSize="13sp" android:textStyle="bold"/>

</LinearLayout>


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

    <ListView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/listView2"/>
</LinearLayout>

</LinearLayout>


<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/innings2">

    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/black">


        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:layout_weight="1">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:id="@+id/BT2" android:textStyle="bold" 
                    android:textColor="@color/white"
                    android:gravity="center_vertical|left" android:paddingLeft="2dp" 
                    android:textSize="13sp"/>

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:id="@+id/BTS2" android:textSize="13sp" 
                    android:textColor="@color/white"
                    android:paddingLeft="4dp"/>
        </LinearLayout>

        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:layout_weight="1"  
                android:gravity="center_vertical|right">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:id="@+id/textView7" android:textStyle="bold" 
                    android:textColor="@color/white"
                    android:textSize="13sp"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0.00"
                    android:id="@+id/Bae2C" android:textColor="@color/white" 
                    android:paddingLeft="2dp"
                    android:paddingRight="8dp" android:textSize="13sp"/>
        </LinearLayout>


    </LinearLayout>
    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">


        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView" android:textColor="@color/white"
                android:layout_weight="3" android:gravity="center"
                android:background="@drawable/table_header_cell_first" 
                android:textSize="13sp"
                android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="R"
                android:id="@+id/textView9" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold" 
                android:clickable="false"
                />
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView10" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textStyle="bold" android:textSize="13sp"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView11" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView4" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textView5" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>

    </LinearLayout>


    <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
        <ListView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/listView3"/>
    </LinearLayout>




    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/black"
            android:baselineAligned="false">


        <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:layout_weight="1"
                android:baselineAligned="false">
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:id="@+id/Bw1" android:textStyle="bold" 
                    android:textColor="@color/white"
                    android:gravity="center_vertical|left" android:paddingLeft="2dp" 
                    android:textSize="13sp"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:id="@+id/BoSe1" android:textSize="13sp" 
                    android:textColor="@color/white"
                    android:paddingLeft="4dp"/>
        </LinearLayout>


    </LinearLayout>
    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">


        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBH" android:textColor="@color/white"
                android:layout_weight="3" android:gravity="center"
                android:background="@drawable/table_header_cell_first" 
                android:textSize="13sp"
                android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBOH" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold" 
                android:clickable="false"
                />
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBMH" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textStyle="bold" android:textSize="13sp"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBRH" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBWsH" android:textColor="@color/white"  
                android:layout_weight="1"               
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>
        <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text=""
                android:id="@+id/textViewBECOH" android:textColor="@color/white" 
                android:layout_weight="1"
                android:gravity="center" 
                android:background="@drawable/table_header_cell"
                android:textSize="13sp" android:textStyle="bold"/>

    </LinearLayout>


    <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
        <ListView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/listView4"/>
    </LinearLayout>

</LinearLayout>


</LinearLayout>

</ScrollView>
4

6 回答 6

25

来自在 Android 中工作的 Google 员工的回答:

不要在 ScrollView 中使用 ListView

https://plus.google.com/107708120842840792570/posts/T5AgJ7jiK88

在此处输入图像描述

于 2013-05-13T06:24:22.883 回答
8

可以做到,尽管您不应该将列表视图放在滚动视图中,但有时这是更简单的方法:https ://stackoverflow.com/a/3495908/1117338

于 2013-05-13T06:43:11.080 回答
7

像这样使用:这就像魅力一样

删除线性布局。使用相对布局并在其中放置两个列表视图,如下所示。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollojt"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#f00"></ListView>

        <ListView
            android:id="@+id/listView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/listView1"
            android:background="#0f0"></ListView>
    </RelativeLayout>
</ScrollView>

添加Utility.java

public class Utility {

    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = 0;
        int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }
}

在您的活动中:

lv1.setAdapter(adapter);
lv2.setAdapter(adapter);

Utility.setListViewHeightBasedOnChildren(lv1);
Utility.setListViewHeightBasedOnChildren(lv2);

感谢#Nirmal 的实际答案https://stackoverflow.com/a/17693628/1403112

于 2016-03-23T19:15:02.177 回答
2

ScrollView并且ListView都使用滚动。所以在我看来,它们不应该一起使用。尝试使用RelativeLayout或其他一些布局,而不是ScrollView

于 2013-05-13T06:22:57.847 回答
0

您可以通过在父布局中包含 ListView 来设置它,如下面的示例 -

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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


        <androidx.cardview.widget.CardView
            android:id="@+id/cardBrand"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/fab_margin"
            android:layout_below="@+id/cardRange"
            app:cardElevation="3dp">

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

                <TextView
                    android:id="@+id/brandTitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Brands"
                    android:layout_marginTop="@dimen/fab_margin"
                    android:layout_marginLeft="@dimen/fab_margin"
                    android:layout_marginRight="@dimen/fab_margin"
                    android:textAppearance="@style/TextAppearance.AppCompat.Small"
                    android:textColor="@color/md_black_1000"/>

                <ListView
                    android:id="@+id/brandList"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="8dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginBottom="@dimen/fab_margin" />

            </LinearLayout>

        </androidx.cardview.widget.CardView>

        <Space
            android:layout_width="match_parent"
            android:layout_height="6dp" />

        <androidx.cardview.widget.CardView
            android:id="@+id/cardRating"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/fab_margin"
            android:layout_below="@+id/cardBrand"
            app:cardElevation="3dp">

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

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Ratings"
                    android:layout_marginTop="@dimen/fab_margin"
                    android:layout_marginLeft="@dimen/fab_margin"
                    android:layout_marginRight="@dimen/fab_margin"
                    android:textAppearance="@style/TextAppearance.AppCompat.Small"
                    android:textColor="@color/md_black_1000"/>

                <ListView
                    android:id="@+id/ratingList"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="8dp"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginBottom="@dimen/fab_margin" />

            </LinearLayout>

        </androidx.cardview.widget.CardView>

        <Space
            android:layout_width="match_parent"
            android:layout_height="6dp" />

    </LinearLayout>

</androidx.core.widget.NestedScrollView>

并且,在填充列表视图之后 -

eachitemSize = 180;

cardBrand.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, eachitemSize * brandsAdapter.getCount()));

cardRating.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, eachitemSize * ratingAdapter.getCount()));

我们上面所做的是,我们将 ScrollView 的高度设置为match_parent. 在填充 ListView 之后,我们将 ListView 的每个父布局定义为其 ListView 项目计数。eachitemSize并且,请记住根据您的每个单元格大小更改值。

另一件需要关心的事情是,在分配 LayoutParams 后,由于新的 LayoutParams,它的边距变得无效。所以,使用<Space/>而不是margin像上面的例子。

希望能帮助到你!!

于 2019-07-03T08:46:45.833 回答
0

我建议使用带有节标题的列表视图...我认为这就是您想要实现的...

这可能会有所帮助 https://learnlinky.com/2016/11/30/listview-section-header-android/

reddy raz 给出的答案只有在我们设置列表项的固定高度时才有效

于 2020-10-10T08:05:40.337 回答