Android ScrollView没有居中

时间:2016-11-24 12:42:32

标签: android android-linearlayout centering android-scrollview

我有以下代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/activity_list_films">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Back"
                android:onClick="back"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

然而,按钮和我动态添加到内部LinearLayout的内容都显示在屏幕的左上角。我做错了什么?

我尝试将layout_gravity="center"gravity="center"放在内部的LinearLayout中,但这没有帮助。

感谢。

5 个答案:

答案 0 :(得分:2)

您的LinearLayout宽度为wrap_content:它不占用屏幕的整个宽度,也不能水平居中内容。因此,将其更改为android:layout_width="match_parent"并将layout_gravity设置为center_horizontal android:layout_gravity="center_horizontal"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/activity_list_films"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:onClick="back"
                android:text="Back" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

答案 1 :(得分:0)

请设置宽度 - &gt; LinearLayout的 match_parent

      <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"<!--change this one -->
            android:layout_height="wrap_content"
            android:id="@+id/activity_list_films">

         <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Back"
            android:onClick="back"/>
    </LinearLayout>

否则,您可以将LinesrLayout设置在中心位置。它将位于ScrollView的中心。

<LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/activity_list_films"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Back"
            android:onClick="back"/>
    </LinearLayout>

答案 2 :(得分:0)

试试这个

<ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity = "center"
            android:gravity="center"
            android:id="@+id/activity_list_films">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Back"
                android:onClick="back"/>
        </LinearLayout>
    </ScrollView>

答案 3 :(得分:0)

您无需在Height内更改Linear Layout的{​​{1}}。

如果您这样做,Scroll View内的内容将无法滚动。

除了保持一致之外,你只需要在Scroll Viewandroid:layout_gravity="center_horizontal"。{/ p>

请按照下面Linear Layout

Layout

答案 4 :(得分:0)

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:fillViewport="true"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:id="@+id/activity_list_films">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Back"
                android:onClick="back"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

您缺少针对ScrollView的fillViewPort