如何在包含 TextView 的 LinearLayout 中使用 gravity 和 layout_gravity

如何在包含 TextView 的 LinearLayout 中使用 gravity 和 layout_gravity

news-image

也许有些人会感到困惑、遇到了困难,或者想知道为什么 TextView 的垂直或水平对齐效果与预期不符。下面是一些重要的要点和示例,有助你理解它的工作原理:

 

  • 检查父布局(LinearLayout)的宽高。 假设你想把多个 TextView 垂直居中到 LinearLayout 中间。使用下面的布局示例时,gravity 和 layout_gravity 将无法生效,因为父布局(LinearLayout)的高度与其子视图(TextView)的总高度相同,导致子视图没有移动空间。

 


android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:background="@color/black"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text1"
android:textColor="@color/white"
android:textSize="32sp"
/> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Text2"
android:textSize="10sp"
/>

 

Gravity

 

  • gravity 用于控制 View(TextView)内部内容的对齐方式,而 layout_gravity 用于控制 TextView 相对于其父布局(LinearLayout)的对齐方式。

如果我们按下面的示例来设置 gravity:

 


android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:background="@color/black">
 

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text1"
android:textColor="@color/white"
android:textSize="32sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Text2"
android:textSize="10sp"
/>

 

我们会得到与之前相同的效果:Text1 和 Text2 并不会垂直居中,因为 gravity 应用于高度为 “wrap_content” 的视图时,其自身没有多余的高度空间可以用于居中。

Gravity 2

如果要让 TextView 垂直居中,我们需要使用 “layout_gravity” 属性。layout_gravity 用于设置 TextView 相对于父布局(LinearLayout)的对齐方式。请看下面的代码:

 



android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:background="@color/black">
 
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text1"
android:textColor="@color/white"
android:textSize="32sp"
android:gravity="center"
/>
 
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Text2"
android:textSize="10sp"
android:gravity="center"
/>

 

Gravity 3

 

接下来的问题是:“我们能否只用 gravity 来让内容居中?”答案是可以的,而且可以实现与上面相同的效果。为此,我们需要再次仔细查看下面的代码。注意两个 TextView 的 layout_height 值,它们都被设置为 “wrap_content”,这就是 Text2 的内容没有显示在居中位置的原因。

 


android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:background="@color/black">
 
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text1"
android:textColor="@color/white"
android:textSize="32sp"
/>
 
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Text2"
android:textSize="10sp"
/>

 

将 layout_height 的值设置为 “match_parent” 就可以解决这个问题。我们的代码会变成:

 

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text1"
android:textColor="@color/white"
android:textSize="32sp"
android:layout_gravity="center"
 />
 
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/white"
android:text="Text2"
android:textSize="10sp"
android:gravity="center"
/>

 

Gravity 4

 

由此可见,gravity 和 layout_gravity 都可以用来对齐和定位视图。

希望这些内容能帮助你更好地理解 TextView 的 gravity 属性。

祝你愉快地进行 Android 编程!

 

 

author-image
author-image
about the author

Ace Mark Urma

about the author

Ace Mark Urma

Ace 凭借十余年的资深从业经验与持续钻研,在后端开发和 IT 编程领域积累了卓越的专业技能。Ace 加入 SEIRIM 团队以来,打造了众多复杂且高性能的 Web 应用程序与项目。

Ready to Get Secure?

The SEIRIM team of professionals is at your service to design, develop and deliver better cybersecurity for your organization.

let’s connect
get latest updates

Similar Articles

2026-02-04 - IT 与网站开发

网站上线100项质量保证检查清单

网站是出乎意料复杂的应用程序,其性能和安全性依赖于许多正确配置并优化的组件,要成功上线需要一个持续推进的过程。请按照我们的百项清单逐条检查,确保网站顺利发布。