我的滚动视图根本不起作用

Posted

技术标签:

【中文标题】我的滚动视图根本不起作用【英文标题】:My scrollview doesn't work at all 【发布时间】:2018-06-18 18:08:25 【问题描述】:

我无法使 ScrollView 正确滚动。它总是把底部的内容截掉,就像是普通的LinearLayout一样。

我的代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_
android:layout_
android:fillViewport="true"
tools:context="com.android.dadiperpus.MainActivity">

我把LinearLayout放在ScrollView里面

<LinearLayout
    android:layout_
    android:layout_
    android:background="@drawable/logo_stan"
    android:orientation="vertical"
    android:weightSum="10">

然后我把RelativeLayout放在LinearLayout里面

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_weight="2">

        <TextView
            android:layout_
            android:layout_
            android:gravity="center_horizontal|center_vertical"
            android:text="CONTOH BRO"
            android:textSize="32sp" />
    </RelativeLayout>

这里我使用Gridlayout

    <GridLayout
        android:id="@+id/mainGrid"
        android:layout_
        android:layout_
        android:layout_weight="8"
        android:alignmentMode="alignMargins"
        android:columnCount="2"
        android:columnOrderPreserved="false"
        android:padding="14dp"
        android:rowCount="3">

然后我将这段代码放入GridLayout

        <android.support.v7.widget.CardView
            android:layout_
            android:layout_
            android:layout_columnWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_rowWeight="1"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp">
            <LinearLayout
                android:layout_
                android:layout_
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">
                <ImageView
                    android:layout_
                    android:layout_
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/logo_stan" />
                <TextView
                    android:layout_
                    android:layout_
                    android:text="Pengantar Kepabeanan"
                    android:textAlignment="center"
                    android:textColor="@android:color/black"
                    android:textSize="18sp"
                    android:textStyle="bold" />
            </LinearLayout>
        </android.support.v7.widget.CardView>

我已经尝试将ScrollView 包裹在LinearLayout 中,但它根本没有改变任何东西。

【问题讨论】:

在单个代码块中添加完整的 xml 【参考方案1】:

我把LinearLayout放在ScrollView里面

<LinearLayout
    android:layout_
    android:layout_
    android:background="@drawable/logo_stan"
    android:orientation="vertical"
    android:weightSum="10">

此线性布局需要使用wrap_content 作为其高度。通过使用match_parent,您是说您希望线性布局仅与托管它的滚动视图一样高......这意味着它将切断所有“可滚动”内容。通过使用wrap_content(或某个比滚动视图更大的固定高度),您将在线性布局中拥有更多内容,而不是在一个屏幕上可见,然后滚动将起作用正如预期的那样。

【讨论】:

还是不能滚动【参考方案2】:

在从线性布局中删除 weightsum、从相对布局和网格布局中删除 layout_weight 时,您的滚动视图将滚动(仅在内容大于屏幕大小的情况下)。为所有这些布局(相对布局和网格布局)赋予高度 wrap_content 而不是 0dp。 实际上,您的代码中发生的情况是:您已经给出了线性布局的高度 match_parent(等于屏幕大小)和 weightsum 10。然后您给出了相对布局 layout_weight = 2 和网格布局的 layout_weight = 8,这意味着相对布局占用了屏幕的 2 个部分网格布局占用了屏幕的 8 个部分。在这种情况下,您的内容将永远不会增长超过屏幕大小,并且网格布局会尝试适应屏幕,因此,您的内容会在底部被截断。

希望对你有帮助。

谢谢

【讨论】:

还是不能滚动 Khoirul,不滚动滚动视图的原因是您用作线性布局背景的 logo_stan 图像。尝试一些大图。

以上是关于我的滚动视图根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ios 8 - 水平滚动视图中的按钮拦截平移事件 - 滚动不起作用

我的水平滚动视图不起作用

水平滚动视图在本机反应中不起作用

Xcode滚动视图不起作用

Swift编程约束下边距不起作用

iOS - 滚动视图和相等宽度不起作用