Android ScrollView 没有居中

Android ScrollView not centering

我有以下代码:

<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 中,但这没有帮助。

谢谢。

请设置线性布局的宽度 -> 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>

您的 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>

试试这个

<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>

您不需要在 Scroll View 中更改 Linear LayoutHeight

如果这样做,Scroll View 中的内容将不会滚动。

您只需要在 Linear Layout 内输入 android:layout_gravity="center_horizontal",而不是保持不变。

关注下方Layout.

<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="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            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>
<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