Android-在LinearLayout中水平居中显示文本视图

Android-在LinearLayout中水平居中显示文本视图,android,android-layout,android-linearlayout,layout-gravity,Android,Android Layout,Android Linearlayout,Layout Gravity,我有以下基本布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="

我有以下基本布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bar_background">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:padding="10dp"
        android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

看起来xml是正确的,但文本是向左对齐的。textview占据父视图的整个宽度,textview设置为居中。不确定问题出在哪里…

TextView
中使用
android:gravity=“center”
而不是
layout\u gravity


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:padding="10dp"
    android:text="HELLO WORLD" />

</LinearLayout>

发生的事情是,由于文本视图填充了内部线性布局的整个宽度,因此它已经位于布局的水平中心。当您使用android:layout_gravity时,它将小部件作为一个整体放置在指定的重力中。您真正想做的不是将整个小部件放在中心,而是将内容放在中心,这可以通过
android:gravity=“center\u horizontal”实现
android:layout\u gravity
属性可以删除。

如果您在
的中心设置
,则首先将
android:layout\u width=“fill\u parent”
强制
不需要使用任何其他重力

    <LinearLayout
            android:layout_toRightOf="@+id/linear_profile" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal">
            <TextView 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="It's.hhhhhhhh...."
                android:textColor="@color/Black"

                />
    </LinearLayout>

只需使用:android:layout\u centerHorizontal=“true”


它会将整个文本视图放在中间

尝试android:gravity=“center”查看您的文本视图如果我理解正确,他可以将“android:layout\u width=“fill\u parent”更改为“wrap\u content”,然后使用android:layout\u gravity=“center\u horizontal”“.我说得对吗?@bluesm不,内部线性布局不允许自己有未填充视图的空间(不考虑空线性布局的情况)。因此,
android:layout\u width
将具有相同的值(在布局之后)。由于文本视图的宽度等于内线布局的宽度,因此文本视图有效地具有
android:layou gravity
的值,和
center
同时进行。对于
ImageView
its
layout\u gravity
TextView
its
gravity
来说,这是唯一有效的方法。安卓太棒了!感谢所有漂亮的SO帖子,如果没有这些帖子,开发是不可能的。不要忘记
android:layout\u width=“match\u parent”
简短而准确的答案。非常感谢。