【问题标题】:How to make whole layout scrollable with scrollable listview inside it?如何使用其中的可滚动列表视图使整个布局可滚动?
【发布时间】:2020-10-31 15:32:21
【问题描述】:

我想让我的整个布局可滚动,我尝试了几种方法,但没有奏效。下面是我的 XML 代码。实际上,我面临的问题是当我没有让我的整个布局可滚动时,我的列表视图显示 4 到 5 个项目。当我尝试使我的整个父布局可滚动时,我的列表视图只显示一个项目,而另一个项目我只能通过滚动看到。表示其留空。

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_gradient"
    android:orientation="vertical"
    android:padding="25dp">

    <LinearLayout
        android:id="@+id/mainContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="start"
        android:orientation="vertical"
        android:visibility="visible">

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

            <TextView
                android:id="@+id/address_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Jaipur, IN"
                android:textColor="@color/colorWhite"
                android:textSize="24dp" />

            <TextView
                android:id="@+id/updated_at_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="20 April 2012, 20:08 PM"
                android:textColor="@color/colorWhite"
                android:textSize="14dp" />
        </LinearLayout>


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

            <TextView
                android:id="@+id/status_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Clear Sky"
                android:textColor="@color/colorWhite"
                android:textSize="18dp" />


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

                <TextView
                    android:id="@+id/temp_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:fontFamily="sans-serif-thin"
                    android:text="30"
                    android:textColor="@color/colorWhite"
                    android:textSize="90dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-thin"
                    android:text="°C"
                    android:textColor="@color/colorWhite"
                    android:textSize="90dp" />

            </LinearLayout>


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="horizontal">

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

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Min Temp: "
                        android:textColor="@color/colorWhite" />

                    <TextView
                        android:id="@+id/temp_min_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="30"
                        android:textColor="@color/colorWhite" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:fontFamily="sans-serif-thin"
                        android:text="°C"
                        android:textColor="@color/colorWhite" />
                </LinearLayout>

                <Space
                    android:layout_width="50dp"
                    android:layout_height="wrap_content" />

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

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Max Temp: "
                        android:textColor="@color/colorWhite" />

                    <TextView
                        android:id="@+id/temp_max_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="35"
                        android:textColor="@color/colorWhite" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:fontFamily="sans-serif-thin"
                        android:text="°C"
                        android:textColor="@color/colorWhite" />

                </LinearLayout>

            </LinearLayout>

        </LinearLayout>

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

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

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:weightSum="3">

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/sunrise"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Sunrise"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/sunrise_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="06:40 AM"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>

                <Space
                    android:layout_width="10dp"
                    android:layout_height="wrap_content" />

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/sunset"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Sunset"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/sunset_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="06:40 AM"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>

                <Space
                    android:layout_width="10dp"
                    android:layout_height="wrap_content" />

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/wind"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Wind"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/wind_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="06:40 AM"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>
            </LinearLayout>

            <Space
                android:layout_width="wrap_content"
                android:layout_height="10dp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:weightSum="3">

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/pressure"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pressure"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/pressure_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="06:40 AM"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>

                <Space
                    android:layout_width="10dp"
                    android:layout_height="wrap_content" />

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/humidity"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Humidity"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/humidity_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="06:40 AM"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>

                <Space
                    android:layout_width="10dp"
                    android:layout_height="wrap_content" />

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="#3CF1EBF1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="8dp">

                    <ImageView
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:src="@drawable/info"
                        app:tint="#FFFFFF" />

                    <Space
                        android:layout_width="wrap_content"
                        android:layout_height="5dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Data By"
                        android:textColor="@color/colorWhite"
                        android:textSize="12dp" />

                    <TextView
                        android:id="@+id/about_tv"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="WeatherMap"
                        android:textColor="@color/colorWhite"
                        android:textSize="14dp" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

        <Space
            android:layout_width="wrap_content"
            android:layout_height="10dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Weather Forecast of Next 5 Days"
            android:textColor="@color/colorWhite"
            android:textSize="14sp"
            android:layout_gravity="center"/>

        <Space
            android:layout_width="wrap_content"
            android:layout_height="10dp" />

        <ListView
            android:id="@+id/forecast_listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#3CF1EBF1"
            android:scrollbars="none"
            />
    </LinearLayout>
</RelativeLayout>

【问题讨论】:

  • 你试过用 NestedScrollView 把它包起来吗?
  • 只在NestedScrollView 内嵌套是行不通的。此外,您需要以编程方式设置listview 高度,如此处所述medium.com/@skidanolegs/… 它将使您的整个布局可滚动

标签: android xml


【解决方案1】:

尝试像 Ali Eid 建议的那样使用 NestedScrollView 包装整个内容。这样就可以了。

【讨论】:

    猜你喜欢
    • 2015-10-13
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多