【问题标题】:could not scroll content in relative or linear layout无法以相对或线性布局滚动内容
【发布时间】:2018-10-04 16:30:55
【问题描述】:

我在顶部相对布局中有三个线性布局

  • 首先它有一个列表视图
  • 第二个它有另一个线性布局
  • 第三个它有一个网格视图

    案例1:当listview从服务器加载内容时,它占据了全屏 所以我看不到它在线性布局之下

    案例 2:当我在最顶层视图应用滚动视图时,内部列表视图会正确滚动。嵌套滚动视图不起作用。

    我想尝试的另一个想法是:我想显示 listview 的每个内容,这样就不需要滚动 listview 内容(滚动顶部真实布局可能会显示 lisview 的内容)..但不知道如何实现这种布局以及这是否可行。 如何在一个屏幕下查看所有三个线性布局的内容? 请帮助你将不胜感激..

这里是布局

<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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context="TeamDetails">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="2dp"
            android:background="@drawable/cardview_shadow"
            android:elevation="2dp"
            android:orientation="vertical"
            android:visibility="visible">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="5dp"
                android:text="Squad"
                android:textColor="@color/primaryDarkColor"
                android:textStyle="bold" />
            <GridView
                android:id="@+id/players_list_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnWidth="120dp"
                android:gravity="center"
                android:horizontalSpacing="5dp"
                android:numColumns="auto_fit"
                android:padding="10dp"
                android:stretchMode="columnWidth"
                android:verticalSpacing="5dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="2dp"
            android:background="@drawable/cardview_shadow"
            android:elevation="2dp"
            android:orientation="vertical"
            android:visibility="visible">

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

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="5dp"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="10dp"
                    android:layout_weight="1"
                    android:text="Fixtures"
                    android:textColor="@color/primaryDarkColor"
                    android:textStyle="bold" />

                <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="3dp"
                    android:layout_weight=".28"
                    android:background="@drawable/menu_bg"
                    android:elevation="1dp"
                    android:gravity="right|end"
                    android:orientation="horizontal"
                    android:visibility="visible">

                    <Spinner
                        android:id="@+id/spinner"
                        android:layout_width="243dp"
                        android:layout_height="11dp"
                        android:layout_centerVertical="true"
                        android:layout_gravity="center"
                        android:layout_marginLeft="5dp"
                        android:background="@android:color/transparent"
                        android:gravity="center"
                        android:spinnerMode="dialog" />

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:layout_gravity="center"
                        android:src="@drawable/drop"
                        android:visibility="visible" />

                </RelativeLayout>

            </LinearLayout>

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

                <ListView
                    android:id="@+id/list_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:elevation="2dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="2dp"
            android:background="@drawable/cardview_shadow"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="5dp"
                android:text="Detail"
                android:textColor="@color/primaryDarkColor"
                android:textStyle="bold" />

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

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

                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

【问题讨论】:

  • 分享你的布局文件。
  • 当您将GridView 的高度设置为wrap_content 的父级时,因此如果您的网格视图包含更多视图,那么其他视图(GridView 的父级的兄弟姐妹)将在下方绘制(out屏幕)。在这种情况下,您将永远不会看到这些视图。更好的方法是为每个视图设置权​​重(在你的情况下,孩子LinearLayouts 在第一个LinearLayout),就像其他建议一样。 :)

标签: android listview gridview android-linearlayout vertical-scrolling


【解决方案1】:

请将布局的高度初始化为0并分配权重属性,以便它们可以为所有布局划分整个屏幕。

示例:如果将两个布局的权重初始化为 1,最后一个初始化为 2。整个屏幕将分为 4 个部分,每个视图将按照权重编号分配部分,但最后一个布局将占用2 份,因为重量是 2。

【讨论】:

    【解决方案2】:

    像这样使用 weight 属性: (将权重值更改为您想要的 UI 分区比例)

    <LinearLayout
        android:weightSum="3"
        android:orientation="vertical"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout
            android:layout_weight="1"
            android:layout_height="0dp"
            android:layout_width="match_parent">
    ........
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_weight="1"
            android:layout_height="0dp"
            android:layout_width="match_parent">
    .........
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_weight="1"
            android:layout_height="0dp"
            android:layout_width="match_parent">
    ......
    
        </LinearLayout>
    
    </LinearLayout>
    

    【讨论】:

      【解决方案3】:

      ScrollView 最多可以容纳一个 ChildView。所以将您的顶部 RelativeLayout 替换为 ScrollView 并在 ScrollView 下方添加其他布局。在 ScrollView 下方添加 LinearLayout 并将 ListView 放入其中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多