线性布局居中

Linear Layout centeralization

我的 LinearLayout 中心化有一些问题,这是我的 xml 布局的一部分:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="300dp">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_payment_card_numbers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:visibility="gone"
        >

    </android.support.v7.widget.RecyclerView>

    <TextView
        android:layout_gravity="center_horizontal|center_vertical"
        android:textSize="@dimen/secondary_text"
        android:text="You have no credit cards"
        android:textStyle="italic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

结果我得到了那个布局:

但我想将我的短信垂直居中。 有什么想法吗?

我已经更新了我的评论。这已经过测试并且可以正常工作。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:gravity="center|center_horizontal"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/rv_payment_card_numbers"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone">

</android.support.v7.widget.RecyclerView>

<TextView
    android:layout_gravity="center_horizontal|center_vertical"
    android:text="You have no credit cards"
    android:textStyle="italic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>

最重要的是让您的 TextView 与您 parent 的身高相匹配。如果它设置为 wrap_content 那么它将无法居中,因为 TextView 没有垂直高度。

只需使用这段 TextView 代码 -

<TextView
android:layout_gravity="center_horizontal|center_vertical"
android:textSize="12sp"
android:gravity="fill_vertical"
android:text="You have no credit cards"
android:textStyle="italic"
android:layout_width="wrap_content"
android:layout_height="match_parent" />

我添加了 android:gravity="fill_vertical" 并制作了 android:layout_height="match_parent"

使用 android:layout_gravity="center" 作为 TextView 的属性。

或者,您也可以将根布局(当前为 LinearLayout)更改为 RelativeLayout,然后添加 centerInParent="true" 属性到 TextView。

试试这个:

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_payment_card_numbers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" >
    </android.support.v7.widget.RecyclerView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center_vertical"
        android:text="You have no credit cards"
        android:textSize="@dimen/secondary_text"
        android:textStyle="italic" />

</LinearLayout>

使用这个肯定会垂直对齐您的短信

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_vertical"

    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:gravity="center_vertical"
        >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_payment_card_numbers"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:visibility="gone"
            >

        </android.support.v7.widget.RecyclerView>

        <TextView

            android:gravity="center_horizontal"
            android:text="You have no credit cards"
            android:textStyle="italic"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>
</LinearLayout>