1

如果屏幕足够大,我需要一个 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 并带有额外的底部空间。检查下面被攻击的屏幕截图:

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

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

额外的空间测量正确的文本视图中的缺失部分,并且问题仅在需要滚动时才会消失(即,如果内容适合屏幕并且不需要滚动时 - 它们出现问题,当内容更多并且需要滚动时问题来了)。

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

顶部 最佳 额外空间 额外空间 末端 结尾

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

4

2 回答 2

2

这解决了我的问题:-

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

有关更多详细信息,请查看:- http://pivotallabs.com/centering-a-view-within-a-scrollview/

于 2015-01-07T14:56:46.173 回答
0

这 2 个 atrrs 解决了问题:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" //this attr
    android:layout_gravity="center"> //and this
</ScrollView>
于 2017-08-16T18:48:41.423 回答