如何使用包含layout_gravity =“center”的子项的ScrollView解决错误

时间:2015-01-03 17:16:43

标签: android-layout android-studio scrollview layout-gravity

如果屏幕足够大,我需要一个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的图片: here is the picture showing textview starting from abc5 instead of abc1

这是显示文字视图下方额外空间的图片: here is the picture showing extra space below text view

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

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

热门 Top 额外空间 Extra Space 结束 End

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

2 个答案:

答案 0 :(得分:2)

这解决了我的问题: -

只需添加android:fillViewport =&#34; true&#34;在滚动视图中,您还可以从它的子项中删除layout_gravity属性,但您可以完成此案例。

有关详情,请查看: - http://pivotallabs.com/centering-a-view-within-a-scrollview/

答案 1 :(得分:0)

这2个问题解决了问题:

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