如何解决包含 layout_gravity="center" 子项的 ScrollView 的错误

How to solve error with ScrollView containing a child with layout_gravity="center"

如果屏幕足够大,我需要一个在其中心显示内容的 ScrollView,否则它应该显示滚动。

这是我用于测试的示例代码

<ScrollView
    android:id="@+id/maincontent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/admob"
    android:layout_below="@id/app_bar">

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

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="abc1\nabc2\nabc3\nabc4\nabc5\nabc6\nabc7\nabc8\nabc9\nabc10\nabc11\nabc12\nabc13\nabc14\nabc15\nabc16\nabc17\nabc18\nabc19\nabc20\nabc21"
            android:textSize="35sp"
            android:textStyle="bold"/>
    </LinearLayout>
</ScrollView>

我的应用程序需要在滚动视图中显示从 abc1 到 abc21。但它显示的是从 abc 5 到 abc21 的额外底部 space。查看下面被攻击的屏幕截图:

这里是显示 textview 从 abc5 而不是 abc1 开始的图片:

这是在文本视图下方显示额外 space 的图片:

额外的 space 措施纠正了 textview 中缺失的部分,而且只有在需要滚动时问题才会消失(即,如果内容适合屏幕并且当滚动没有打开时 needed-their问题,当内容较多,需要滚动时,问题就来了。

更新 1 :- 添加了一些风景图片

置顶 额外Space 结束

更新 2: 一旦我删除了 layout_gravity="center" 问题就解决了,但我需要那个属性。因为我的内容是动态的,当需要显示小内容时,它应该显示在中心而不是顶部(当我删除该属性时会发生这种情况),当内容很大时,它需要显示滚动。

这解决了我的问题:-

只需将 android:fillViewport="true" 添加到滚动视图,您也可以从其子项中删除 layout_gravity 属性,但您可以完成此案例。

更多详情请查看:- http://pivotallabs.com/centering-a-view-within-a-scrollview/

这 2 个 atr 解决了问题:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" //this attr
    android:layout_gravity="center"> //and this
</ScrollView>