TextView在LinearLayout中的居中显示

所谓TextView的居中,分为两种。

(1)文字在TextView控件中的居中

"@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="mode2" />

android:gravity属性,是用于设置控件内容,在控件中的相对位置。

例中,TextView的android:layout_height属性设置为wrap_content,因此,若将android:gravity设置为center_vertical是无效的。原因在于,控件高度与文字高度相同,垂直居中无法体现。

(2)TextView控件在父级容器中的居中

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:text="mode1" />

    LinearLayout>

android:layout_gravity属性,用于设置控件在父级容器中的位置。

例中,父级容器android:orientation=”vertical”,因此,若将TextView的android:layout_gravity设置为center_vertical是无效的。原因在于,父类容器为垂直方向排列,受父容器约束,TextView可控方向只能为水平。

显示效果图

TextView在LinearLayout中的居中显示_第1张图片

总体布局代码


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.breakloop.textviewgravity.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:text="mode1" />

    LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="mode2" />
    LinearLayout>

LinearLayout>

注:需要注意的是,不要仅从Android Studio的Blue Print查看预览效果,其预览效果跟实际显示效果不同。对比如下

TextView在LinearLayout中的居中显示_第2张图片

你可能感兴趣的:(android应用开发)