如何在线性布局中保持TextView为中心

时间:2018-08-13 04:55:54

标签: android android-layout

这是我的xml代码,我希望将中心Textview保留在包含textview和视图的线性布局中,但是我希望文本视图可以在线性布局底部高喊中心以查看,即按钮textview应该顶视图和底视图linearLayout居中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/no_vouchers_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v7.widget.CardView
    android:id="@+id/xxlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/header_height"
    android:visibility="gone"
    tools:visibility="visible">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/margin_12"
        android:orientation="vertical">

        <TextView
            android:id="@+id/xxmessage"
            style="@style/Typeface.Body.TextMidGrey"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lineSpacingExtra="@dimen/tfl_6"
            tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginTop="@dimen/margin_16"
            android:background="@color/text_light_grey" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView

                android:id="@+id/button"
                style="@style/Typeface.Body.Bold.White"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_16"
                android:paddingBottom="@dimen/padding_12"
                android:paddingTop="@dimen/padding_12"
                android:background="@drawable/welcome_screen_button_selector"
                android:layout_centerHorizontal="true"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="@string/convert_points_to_vouchers"
                android:textAllCaps="false" />
        </LinearLayout>

    </LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

使用 android:layout_width="match_parent" 和           android:gravity="center" 您的TextView可以使用

使用此

 <TextView
     android:id="@+id/xxmessage"
     style="@style/Typeface.Body.TextMidGrey"
     android:layout_width="match_parent"
     android:gravity="center"
     android:layout_height="wrap_content"
     android:lineSpacingExtra="@dimen/tfl_6"
     tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />

代替这个

<TextView
      android:id="@+id/xxmessage"
      style="@style/Typeface.Body.TextMidGrey"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:lineSpacingExtra="@dimen/tfl_6"
      tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />

示例代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/no_vouchers_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:id="@+id/xxlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/header_height"
        android:visibility="gone"
        tools:visibility="visible">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="@dimen/margin_12"
            android:orientation="vertical">

            <TextView
                android:id="@+id/xxmessage"
                style="@style/Typeface.Body.TextMidGrey"
                android:layout_width="match_parent"
                android:gravity="center"
                android:layout_height="wrap_content"
                android:lineSpacingExtra="@dimen/tfl_6"
                tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginTop="@dimen/margin_16"
                android:background="@color/text_light_grey" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical">

                <TextView    
                    android:id="@+id/button"
                    style="@style/Typeface.Body.Bold.White"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="@dimen/margin_16"
                    android:paddingBottom="@dimen/padding_12"
                    android:paddingTop="@dimen/padding_12"
                    android:background="@drawable/welcome_screen_button_selector"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="@string/convert_points_to_vouchers"
                    android:textAllCaps="false" />
            </LinearLayout>

        </LinearLayout>
    </android.support.v7.widget.CardView>
</RelativeLayout>

答案 1 :(得分:0)

尝试使用此android:layout_gravity =“ center”

  <TextView
            android:id="@+id/xxmessage"
            style="@style/Typeface.Body.TextMidGrey"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:lineSpacingExtra="@dimen/tfl_6"
            tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />

答案 2 :(得分:0)

在android中创建嵌套布局可能会导致performance issues泛滥。 我建议您使用 ConstraintLayout ,而不是线性布局。 ConstraintLayout对构建响应式UI很有帮助。 使用ConstraintLayout,您可以easily drag/drop any element并根据您的活动对其进行约束。