Android-在LinearLayout中水平居中放置TextView


111

我有以下基本布局

<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设置为居中。不确定是什么问题...


2
为您的textview尝试android:gravity =“ center”
user370305 2011年

Answers:


227

发生的是,由于TextView填充了内部LinearLayout 的整个宽度,因此它已经在布局的水平中心。使用android:layout_gravity它时,将小部件作为一个整体放置在指定的重力下。而不是将整个窗口小部件放置在中心位置,而是将内容放置在中心位置即可完成,android:gravity="center_horizontal"并且android:layout_gravity可以删除该属性。


3
如果我理解正确,他可以将“ android:layout_width =“ fill_parent”更改为“ wrap_content”,然后使用android:layout_gravity =“ center_horizo​​ntal”。对吗
Paul Brewczynski 2013年

1
@bluesm不,内部LinearLayout不允许自己具有未填充View的空间(不考虑空LinearLayout的情况)。因此,的android:layout_width值将相同(布局后)。由于TextView的宽度等于与内的LinearLayout的TextView的有效具有android:layout_gravity的值leftrightcenter在同一时间。
Dan S

1
因为ImageViewlayout_gravityTextViewgravity唯一有效的。Android很棒!感谢所有美丽的SO职位,没有这些职位是不可能的。
Atul

1
别忘了 android:layout_width="match_parent"
Choletski '16

24
<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>


24

如果设置<TextView>在中心<Linearlayout>则首先把android:layout_width="fill_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>


4

只需使用:android:layout_centerHorizo​​ntal =“ true”

它将整个textview放在中心

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.