如何禁用列表视图的滚动视图并随着单元格的增加而增加其列表视图的高度?

时间:2018-11-14 09:29:18

标签: android xml android-studio android-layout

我有一个活动,其中包含一些文本视图和滚动视图中的按钮。我在相同的布局中有另一个列表视图,具有默认的滚动视图。 现在,应禁用该列表视图的滚动视图,并且高度应随行或单元格的增加而动态增加,并且应将父滚动视图应用于文本视图,按钮,列表视图。

这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="#efe9ef"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    tools:context="com.bodaty.samyata.samyata1.com.bodaty.samyata.samyata2.deyaPay.SuccessPage">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
       >

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


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="25dp"
            android:layout_marginStart="25dp"
            android:layout_marginTop="20dp"
            android:fontFamily="@font/poppinsmedium"
            android:text="ORDER DETAILS:"
            android:textColor="#000000"
            android:textSize="14sp" />
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:layout_marginTop="10dp"
                android:orientation="vertical"
                android:padding="@dimen/activity_horizontal_margin"
                app:cardCornerRadius="4dp"
                app:cardElevation="2dp"
                tools:targetApi="n">

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

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="2dp"
                        android:layout_marginTop="8dp"

                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="170dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:fontFamily="@font/poppinsmedium"
                            android:gravity="start"
                            android:text="@string/sub_total"
                            android:textAlignment="textStart"
                            android:textColor="#58595d"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:layout_width="55dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:text="@string/dolor"
                            android:fontFamily="@font/poppinsmedium"
                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:id="@+id/pq"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="20dp"
                            android:layout_marginStart="10dp"
                            android:fontFamily="@font/poppinsmedium"
                            android:gravity="end"
                            android:lines="1"
                            android:text="@string/price"
                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            tools:targetApi="n" />
                    </LinearLayout>


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="2dp"
                        android:layout_marginTop="0dp"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="170dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:fontFamily="@font/poppinsmedium"
                            android:gravity="start"
                            android:text="@string/tax"
                            android:textAlignment="textStart"
                            android:textColor="#58595d"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:layout_width="53dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:fontFamily="@font/poppinsmedium"
                            android:gravity="end"
                            android:text="@string/dolor"

                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:id="@+id/taxtopay"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="20dp"
                            android:layout_marginStart="10dp"
                            android:gravity="end"
                            android:lines="1"
                            android:text="@string/price"
                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            android:fontFamily="@font/poppinsmedium"

                            tools:targetApi="n" />
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:layout_marginTop="0dp"
                        android:orientation="horizontal"
                        android:visibility="gone"
                        android:id="@+id/dc">

                        <TextView
                            android:layout_width="170dp"
                            android:layout_height="match_parent"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:fontFamily="@font/poppinsmedium"
                            android:gravity="start"
                            android:text="delivery charges :"
                            android:textAlignment="textStart"
                            android:textColor="#58595d"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:text="@string/dolor"
                            android:textAlignment="textEnd"
                            android:textColor="#000000"
                            android:textSize="14sp"
                            android:fontFamily="@font/poppinsmedium"

                            tools:targetApi="n" />

                        <TextView
                            android:id="@+id/cost1"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="20dp"
                            android:layout_marginStart="10dp"
                            android:gravity="end"
                            android:lines="1"
                            android:fontFamily="@font/poppinsmedium"
                            android:text="@string/price"
                            android:textAlignment="textEnd"
                            android:textColor="#000000"
                            android:textSize="14sp"
                            tools:targetApi="n" />
                    </LinearLayout>


                    <View
                        android:layout_width="match_parent"
                        android:layout_height="0.5dp"
                        android:layout_marginEnd="10dp"
                        android:layout_marginTop="8dp"
                        android:layout_marginStart="10dp"
                        android:background="#808080">

                    </View>


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:layout_marginTop="8dp"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="170dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:gravity="start"
                            android:fontFamily="@font/poppinsmedium"
                            android:text="@string/total_price"
                            android:textAlignment="textStart"
                            android:textColor="#000"
                            android:textSize="14sp"
                            tools:targetApi="n" />


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="10dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:text="@string/dolor"
                            android:fontFamily="@font/poppinsmedium"

                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            tools:targetApi="n" />

                        <TextView
                            android:id="@+id/amountpaid"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="20dp"
                            android:layout_marginStart="10dp"
                            android:gravity="end"
                            android:lines="1"
                            android:text="@string/price"
                            android:textAlignment="textEnd"
                            android:textColor="#000"
                            android:textSize="14sp"
                            android:fontFamily="@font/poppinsmedium"

                            tools:targetApi="n" />
                    </LinearLayout>
                </LinearLayout>
            </android.support.v7.widget.CardView>
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:layout_marginTop="10dp"
                android:orientation="vertical"
                app:cardCornerRadius="4dp"
                app:cardElevation="2dp"
                tools:targetApi="n">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"

                    android:orientation="vertical"
                    android:background="#ffffff"
                    android:padding="8dp"


                    android:weightSum="2">


                    <TextView
                        android:id="@+id/textView12"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="8dp"
                        android:layout_marginRight="8dp"
                        android:fontFamily="@font/poppinsmedium"
                        android:gravity="start"
                        android:layout_marginTop="8dp"
                        android:text="@string/delivery_details"
                        android:textAlignment="textStart"
                        android:textColor="#000000"
                        android:textSize="14sp"
                        tools:targetApi="n" />


                    <View
                        android:layout_width="match_parent"
                        android:layout_height="0.4dp"
                        android:layout_marginTop="10dp"
                        android:background="#808080">

                    </View>



                    <TextView
                        android:id="@+id/dm"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:layout_marginEnd="10dp"
                        android:layout_marginStart="10dp"
                        android:fontFamily="@font/poppinsmedium"
                        android:text="@string/personal_shopper"
                        android:textColor="#58595d"
                        android:textSize="14sp"
                        android:layout_marginTop="4dp"
                        tools:targetApi="n"
                        tools:ignore="RtlHardcoded" />



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

                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:orientation="horizontal">

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginLeft="10dp"
                                android:layout_marginEnd="10dp"
                                android:layout_marginStart="10dp"
                                android:fontFamily="@font/poppinsmedium"
                                android:text="@string/rating_selectedn"
                                android:textColor="#58595d"
                                android:textSize="14sp"
                                tools:targetApi="n"
                                tools:ignore="RtlHardcoded" />

                            <TextView
                                android:id="@+id/psrate"
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_marginEnd="20dp"
                                android:layout_marginLeft="8dp"
                                android:layout_marginRight="2dp"
                                android:layout_marginStart="8dp"
                                android:layout_weight="1"
                                android:fontFamily="@font/poppinsmedium"
                                android:paddingEnd="5dp"
                                android:paddingStart="5dp"
                                android:text="@string/one"
                                android:textColor="#000000"
                                android:textSize="14sp"
                                tools:targetApi="n" />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"

                            android:orientation="horizontal">

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginEnd="10dp"
                                android:layout_marginLeft="10dp"
                                android:layout_marginStart="10dp"
                                android:fontFamily="@font/poppinsmedium"
                                android:text="@string/at_time"
                                android:textColor="#58595d"
                                android:textSize="14sp"
                                tools:ignore="RtlHardcoded"
                                tools:targetApi="n" />

                            <TextView
                                android:id="@+id/pstime"
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_marginEnd="20dp"
                                android:layout_marginLeft="8dp"
                                android:layout_marginRight="20dp"
                                android:layout_marginStart="2dp"
                                android:layout_weight="1"
                                android:fontFamily="@font/poppinsmedium"
                                android:paddingEnd="5dp"
                                android:paddingStart="5dp"
                                android:text="@string/_0_00_pm"
                                android:textColor="#000000"
                                android:textSize="14sp"
                                tools:targetApi="n" />
                        </LinearLayout>

                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:orientation="horizontal">

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginLeft="10dp"
                                android:layout_marginEnd="10dp"
                                android:layout_marginStart="10dp"
                                android:fontFamily="@font/poppinsmedium"
                                android:text="@string/delivery_charges"
                                android:textColor="#58595d"
                                android:textSize="14sp"
                                tools:targetApi="n"
                                tools:ignore="RtlHardcoded" />

                            <TextView
                                android:id="@+id/cost"
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_marginEnd="20dp"
                                android:layout_marginLeft="8dp"
                                android:layout_marginRight="8dp"
                                android:layout_marginStart="2dp"
                                android:layout_weight="1"
                                android:fontFamily="@font/poppinsmedium"
                                android:paddingEnd="5dp"
                                android:paddingStart="5dp"
                                android:text="@string/_100"
                                android:textColor="#000000"
                                android:textSize="14sp"
                                tools:targetApi="n" />
                        </LinearLayout>


                    </LinearLayout>
                </LinearLayout>
            </android.support.v7.widget.CardView>

        <TextView
                android:id="@+id/deyapay"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_marginLeft="25dp"
                android:layout_marginStart="25dp"
                android:fontFamily="@font/questrial"
                android:textColor="#000000"
                android:textSize="20sp" />

    <ListView
        android:id="@+id/list"
        android:background="#ffffff"
        android:layout_width="match_parent"
        android:layout_height="600dp"
        android:layout_marginBottom="50dp"
        android:layout_marginTop="16dp"
        />

      </LinearLayout>

    </ScrollView>
    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:padding="@dimen/activity_horizontal_margin"
        app:cardCornerRadius="4dp"
        app:cardElevation="2dp"
        tools:targetApi="n">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_margin="10dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:layout_marginStart="8dp"
                android:orientation="vertical">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Grand total"
                    android:textColor="#58b90c"
                    android:background="#ffffff"
                    android:textSize="14sp"
                    android:fontFamily="@font/poppinsmedium"
                    />

                <TextView
                    android:id="@+id/amountpaid1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="$00.00"
                    android:textColor="#000000"
                    android:background="#ffffff"
                    android:textSize="14sp"
                    android:fontFamily="@font/poppinsmedium"


                    />
            </LinearLayout>


            <Button
                android:id="@+id/homepage"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1.2"
                android:background="@drawable/buttonbackground"
                android:fontFamily="@font/questrial"
                android:gravity="center_vertical"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:text="Continue"
                android:textAlignment="center"
                android:textColor="#ffffff"
                android:textSize="16sp"
                android:layout_alignParentBottom="true"
                android:textStyle="bold"
                tools:ignore="RtlCompat"
                tools:targetApi="n">

            </Button>
        </LinearLayout>
    </android.support.v7.widget.CardView>

</RelativeLayout>

预先感谢

1 个答案:

答案 0 :(得分:1)

您不应该将ListView放在ScrollView内,因为ListView类实现了自己的滚动,并且它只是不接收手势,因为它们都由父级{ {1}}。我强烈建议您以某种方式简化布局。例如,您可以添加要滚动到ScrollView的视图作为页眉或页脚。

更新

Android SDK正式支持从API级别21(棒棒糖)开始的嵌套滚动容器。 ListViewView类中有一堆提供此功能的方法。要使Lollipop上的嵌套滚动工作,您必须通过在其XML声明中添加ViewGroup或显式调用android:nestedScrollingEnabled="true"来为子滚动视图启用嵌套滚动。

如果您想在棒棒糖之前的设备上进行嵌套滚动工作,则必须使用支持库中的相应实用程序类。首先,您必须将setNestedScrollingEnabled(true)替换为NestedScrollView。后者同时实现了NestedScrollingParentNestedScrollingChild,因此可以用作父级或子级滚动容器。

但是ScrollView不支持嵌套滚动,因此您需要对其进行子类化并实现ListView。幸运的是,支持库提供了NestedScrollingChildHelper类,因此您只需创建该类的实例并从视图类的相应方法中调用其方法即可。