如何在包含 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)的对齐方式。请看下面的代码:

 

<!--?xml version="1.0" encoding="utf-8"?-->

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 has built up amazing skills as a backend developer and IT programmer over a decade of high-level experience and study. He has worked with SEIRIM for nearly 8 years, building a wide array of complex and high performance web applications and projects.

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项质量保证检查清单

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