Place a block at the center of a ScrollView

若如初见. 提交于 2019-12-04 03:33:47

问题


I have a ScrollView that contains a single child (elements wrapped by a LinearLayout). Sometime this child's height is half of the viewport's height, sometime it is bigger.

Here the layout :

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingBottom="10dp"
    android:paddingTop="10dp"
    android:background="@color/some_background">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:background="@drawable/fond_consult"
        android:orientation="vertical"
        android:weightSum="2">

        ... Some TextViews and ImageViews...

    </LinearLayout>
</ScrollView>

When the screen size and density is low, the child is correctly displayed in the ScrollView, but when rendering this activity on a bigger screen like HDPI and XHDPI, the content is placed at the top of the ScrollView.

Is there any way to set gravity for the sole child of the ScrollView, or do I have to delete the scrollView if the device screen is bigger than the measered height of the child ?


回答1:


What you can do is try adding android:layout_gravity="center" to ScrollView with its layout_width and layout_height as wrap_content. As ScrollView manages itself to the height and width of its child layouts.




回答2:


In normal case, ScrollView will only occupy the minimum required space, so the question of vertical alignment(in case of vertical scroll) does not arise at all. You may go through the article in http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/. It may help you.



来源:https://stackoverflow.com/questions/12178119/place-a-block-at-the-center-of-a-scrollview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!