android - 如何禁用 ListView 的 ScrollView 并随着单元格的增加增加 ListView 的高度?

标签 android xml android-studio android-layout

我有一个在 ScrollView 中包含一些 TextView 和按钮的 Activity 。我有另一个具有默认 ScrollView 的相同布局的 ListView 。 现在应该禁用该 ListView 的 ScrollView ,高度 ScrollView 应该随着行或单元格的增加而动态增加,父 ScrollView 应该应用于 TextView 、按钮、 ListView 。

这是我的 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>

提前致谢

最佳答案

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

更新:

从 API 级别 21 (Lollipop) 开始,Android SDK 正式支持嵌套滚动容器。 ViewViewGroup 类中有许多方法可提供此功能。要使嵌套滚动在 Lollipop 上工作,您必须通过将 android:nestedScrollingEnabled="true" 添加到其 XML 声明或通过显式调用 setNestedScrollingEnabled(true)< 来为子 ScrollView 启用它.

如果你想让嵌套滚动在 Lollipop 之前的设备上工作,你可能会这样做,你必须使用支持库中的相应实用程序类。首先,您必须将 ScrollView 替换为 NestedScrollView .后者同时实现了 NestedScrollingParentNestedScrollingChild因此它可以用作父滚动容器或子滚动容器。

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

关于android - 如何禁用 ListView 的 ScrollView 并随着单元格的增加增加 ListView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296862/

相关文章:

android - android studio项目中没有dimens.xml

php - 将元素与动态属性值相匹配

xml - 在浏览器中显示 UML

java - 重写 onCreateView 方法导致错误

android - Hello World android 应用程序在启动时崩溃

java - Android 7 英寸平板电脑 480x800

android - 返回到 list 中父 Activity 错误的父 Activity

android - (31,16) : error CS1525: Unexpected symbol `(' , 期望 `)' 、 `,' 、 `;' 、 `[' 或 `='

android - 为什么工具栏中的菜单图标没有出现在 DrawerLayout 中

java - 如何将 "send"变量从应用程序转移到不同的模块?