【问题标题】:how to center a view inside its parent using layout_gravity attribute如何使用 layout_gravity 属性在其父视图中居中
【发布时间】:2017-05-07 23:15:15
【问题描述】:

请告诉我为什么要使用

android:layout_gravity="center_horizontal|center_vertical"

TextView 不在 LinearLayout 中间居中?

我知道如果我将 TextView 参数更改为如下所示,我可以将 TextView 居中于其父级中:

<TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:text="text_1"></TextView>

但我想做的是,使用“android:layout_gravity”将 TextView 置于其父级的中心

代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3"
tools:context="com.example.bestandlayout_00.ActMain">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center_vertical"
        android:text="text_1"></TextView>
</LinearLayout>

</LinearLayout>

【问题讨论】:

  • 把 android:gravity="center" 放到你的内部线性布局中

标签: android android-layout textview


【解决方案1】:

用这个例子就明白了

android:layout_gravity

  • android:layout_gravity 用于设置 元素 在 其父级(例如,Layout 中的子级 View)。
  • LinearLayoutFrameLayout 支持

android:gravity

  • android:gravity 用于设置 content 在一个 元素(例如,TextView 中的文本)。

<?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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="left"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorPrimary"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorPrimary"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorPrimary"
            android:gravity="right"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorAccent"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorAccent"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorAccent"
            android:gravity="right"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="right"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorPrimaryDark"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorPrimaryDark"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorPrimaryDark"
            android:gravity="right"/>

    </LinearLayout>

</LinearLayout>

呈现如下:

现在您在这里看到 3 种颜色,那是因为 textView 背景,

让我们使用android:layout_gravity,这里在LinearLayouts 中使用,它们位于父级内部、父级左侧、父级中间、父级右侧(参见 LinearLayout 有/可以生孩子

android:gravity 检查那些 textViews 每种颜色有 3 个,看看他们(他们的内容)在他们的元素中的位置(文本视图有孩子吗?还是只有一个内容?)

我有这种感觉

gravity - 在视图内排列内容,视图不想移动但内容移动

layout_gravity - 这与内容无关,而是在此处和那里移动的布局

浏览原始的question 以及它的酷

【讨论】:

    【解决方案2】:

    试试这个:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="3">
    
    <LinearLayout
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text_1"/>
    </LinearLayout>
    

    【讨论】:

      【解决方案3】:

      试试这个

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                              xmlns:tools="http://schemas.android.com/tools"
                              android:id="@+id/activity_main"
                              android:layout_width="match_parent"
                              android:layout_height="match_parent"
                              android:orientation="vertical"
                              android:weightSum="3">
      
                              <RelativeLayout
      
                                  android:layout_width="match_parent"
                                  android:layout_height="0dp"
                                  android:layout_weight="1">
      
                                  <TextView
                                      android:id="@+id/tv1"
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:layout_centerInParent="true"
                                      android:text="text_1"/>
                              </RelativeLayout>
      

      【讨论】:

        猜你喜欢
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 2014-09-17
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 2017-09-07
        相关资源
        最近更新 更多