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-10-04

답변:


227

무슨 일이 일어나고 있는지는 TextView가 내부 LinearLayout 의 전체 너비를 채우고 있기 때문에 이미 레이아웃 의 수평 중앙에 있다는 것 입니다. 사용 android:layout_gravity하면 위젯 전체가 지정된 중력에 배치됩니다. 전체 위젯 중앙을 배치하는 대신 실제로 수행하려는 것은 컨텐츠 를 중앙에 배치 android:gravity="center_horizontal"하고 android:layout_gravity속성을 제거 할 수있는 것입니다.


3
wrap_content "로"fill_parent "다음 안드로이드 사용 = layout_gravity를"만약 내가 제대로 이해하고 그는 "layout_width = 안드로이드"를 변경할 수 있습니다.? center_horizontal "맞죠
폴 Brewczynski

1
@bluesm 아니요, 내부 LinearLayout은 뷰로 채워지지 않은 공간을 자체적으로 허용하지 않습니다 (빈 LinearLayout의 경우 고려하지 않음). 따라서은 android:layout_width(레이아웃 후) 동일한 값을 갖습니다. 텍스트 뷰의 폭의 내측의 LinearLayout과 동일이기 때문에, 텍스트 뷰 효과적으로 보유 android:layout_gravityleft, rightcenter에서 동일한 시간.
Dan S

1
들어 ImageViewlayout_gravity와에 대한 TextViewgravity무엇인가 에만 작동합니다. Android는 훌륭합니다! 개발이 불가능한 모든 아름다운 SO 게시물 덕분입니다.
Atul

1
잊지 마세요 android:layout_width="match_parent"
Choletski 2011

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>

16

대신 android:gravity="center"에서 사용하십시오 .TextViewlayout_gravity


짧고 정확한 답변. 주셔서 감사합니다
nurnachman

4

다음을 사용하십시오. android : layout_centerHorizontal = "true"

전체 텍스트 뷰를 중앙에 배치합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.