TextView에서 텍스트를 가로 및 세로로 가운데 맞추는 방법은 무엇입니까?


2024

에서 텍스트를 가로 및 세로 TextView가운데에 배치하여 TextView에서 가운데에 정확히 표시되도록 하려면 어떻게해야 Android합니까?


7
layout_width와 layout_height를 fill_parent로 설정 한 다음 중력을 중앙으로 설정하십시오. 그 트릭을 할 것입니다
Amila

2
fill_parent는 더 이상 사용되지 않으므로 layout_width 및 layout_height에서 MATCH_PARENT를 사용하고 TextView의 중력을 중앙으로 설정하십시오.
Bilal Ahmad

답변:


3084

XML 레이아웃을 사용한다고 가정합니다.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

중력을 사용 center_vertical하거나 center_horizontal필요에 따라 사용할 수도 있습니다 .

그리고 @stealthcopter가 java에 주석을 달았습니다. .setGravity(Gravity.CENTER);


58
레이아웃의 높이와 너비가 wrap_content로 설정된 RelativeLayout과 함께 사용하면 작동하지 않습니다
Rob

96
@Rob, 너비와 높이가 wrap_content이면 기술적으로 텍스트는 이미 중앙에 있습니다.
JoJo

3
다른보기를 기준으로 TextView를 정렬하고 싶지만 텍스트 자체가 중앙에 있습니까?

9
이것은 나를 위해 작동하지 않습니다 ( android:gravity="center"). 여전히 화면의 가장 왼쪽에 표시됩니다. :(
uSeRnAmEhAhAhAhAhA

30
와 혼동 android:layout_gravity="center"하지 말고 다른 것을하십시오.
Rudi Kershaw

444
android:gravity="center" 

이 트릭을 할 것입니다


32
이것이 작동하려면 textview가 match_parent 또는 fill_parent 여야합니다. 포장 내용물이 있으면 가운데에 있지 않습니다.
Kalel Wade

7
@KalelWade : wrap_content를 사용하여 텍스트 뷰에서 텍스트를 중앙에 맞추는 것은 전혀 의미가 없습니다. 텍스트보기를 부모보기의 중심에 두는 것을 생각할 수도 있습니다.이 경우 부모 에게이 줄을 간단하게 넣으십시오.
Mooing Duck

@Mooing Duck 랩 내용을 사용하지 않는 이유는 말이되지 않습니다. 그러나 당신이 대처하고 붙일 때 또는 서두를 때, 둘을 합치 지 않을 수도 있습니다. 그것이 내가 언급 한 이유입니다.
Kalel Wade

1
너비와 높이가 "wrap_content"인 TextView가 너비와 높이가 "match_parent"인 LinearLayout 내에 있으면 Linear_layout의 layout_gravity를 설정해야합니다.
파이잘 나시르

1
@MooingDuck, 높이가 "wrap_content"이고 중력이 "center_vertical"인 경우 디자인 (미리보기)에서 중심으로 그려 지지만 장치에서는 맨 위에 배치됩니다. 따라서 높이를 "match_parent"로 만들고 중력을 "center_vertical"또는 "center"로 설정하십시오.
CoolMind

296

다음을 사용하여 동적으로 설정할 수도 있습니다.

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

141
또는 그냥 textview.setGravity (Gravity.CENTER);
Amplify91

XML로 작성하거나 Java 파일로 작성하기 위해 선택할 방법을 결정하는 판단 기준은 무엇입니까?
kenju

2
@Kenju 쉽게 편집 할 수 있고 런타임 동안 값이 변경되지 않는 경우 : XML. 실시간으로 값을 변경해야하는 경우 (예 : 사용자가 버튼을 누를 때 정렬 변경) Java를 통해서만 할 수 있습니다.
구스타보 메이 엘

2
@GustavoMaciel 따라서 동적으로 수정해야 할 필요가 없다면 기본적으로 xml입니다 ... 이제 알았습니다. 간단하고 유용한 답변에 감사드립니다!
kenju

114
android:layout_centerInParent="true"

이것은 레이아웃의 높이와 너비가 wrap_content로 설정된 RelativeLayout과 함께 사용될 때 작동합니다.


19
이것은 텍스트가 아닌 TextView의 중심입니다.
anthropomo

2
에 단어 줄 바꿈이 있으면 작동하지 않습니다 TextView. 텍스트는 전체 너비 및 여러 줄로되어 있으며에서 왼쪽으로 정렬됩니다 TextView. 디스플레이에 왼쪽 정렬로 나타납니다. 다른 답변에 지정된대로 "중력"을 사용해야합니다.
David Manpearl

82

다음 조합을 사용할 수도 있습니다.

android:gravity="left|center"

그런 다음 textview 너비가 "fill_parent"보다 큰 경우 텍스트는 여전히 왼쪽에 정렬됩니다 (중력이 "center"로만 설정된 것처럼 중앙에 배치되지 않음).


56

중력을 적용하십시오 :

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

수직의 경우 :

txtView.setGravity(Gravity.CENTER_VERTICAL);

XML에서 :

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>

42

이를 수행하는 두 가지 방법이 있습니다.

XML 코드에서 첫 번째. Gravity속성에 주의를 기울여야합니다 . 그래픽 편집기에서이 속성을 찾을 수도 있습니다. XML EDITOR보다 쉬울 수 있습니다.

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text"
/>

특정 시나리오의 경우 중력 값은 다음과 같습니다.

center_vertical|center_horizontal

그래픽 편집기에서 가능한 모든 값을 찾을 수 있으며 결과도 볼 수 있습니다.


41

TableLayout을 사용하는 경우 TableRows의 중력도 가운데로 설정하십시오. 그렇지 않으면 작동하지 않습니다. 적어도 TableRow의 중력을 중앙으로 설정하기 전까지는 나와 함께 작동하지 않았습니다.

예를 들면 다음과 같습니다.

<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">        
    <TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>        
</TableRow>

흥미 롭군 LinearLayout (TableRow 부모)에도 유효한지 확인해야합니다.
Martin

38

다음과 같이 TextView Gravity (가로 가로 및 세로 세로) 를 설정해야합니다 .

android:layout_centerHorizontal="true"   

android:layout_centerVertical="true"

그리고 동적으로 다음을 사용합니다.

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

코드 의미가 잘못되었습니다. 장착 layout_centerhorizontallayout_centervertical의해 layout_centerHorizontallayout_centerVertical(그렇지 못해 작업을 "H"및 "V"자로).
yugidroid

2
layout_ *는 뷰의 부모에게 원하는 위치를 알려줍니다. layout_ *가보기를 알 수 없으면 어떻게 구성 요소를 배치
Dandre 앨리슨

34

제 생각에는

android:gravity="center"

보다 낫다,

android:layout_centerInParent="true"

보다 낫다

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

적어도 텍스트 서식을 지정하십시오.


30

선형 레이아웃의 경우 : XML에서 다음과 같은 것을 사용하십시오.

<TextView  
    android:id="@+id/textView1"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text goes here"
/>

런타임에이를 수행하려면 활동에 이와 같은 것을 사용하십시오.

TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

상대 레이아웃의 경우 : XML에서 이와 같은 것을 사용하십시오.

<TextView  
    android:id="@+id/textView1"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_centerInParent="true"
    android:text="Your Text goes here"
/>

런타임에이를 수행하려면 활동에 이와 같은 것을 사용하십시오.

TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);

24

XML 파일에서 사용하십시오.

레이아웃 파일

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:text="@string/stringtext"/>

또는:

이것을 Java 클래스 내에서 사용하십시오.

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

21

상대 레이아웃에 사용

android:layout_centerInParent="true"

다른 레이아웃

android:gravity="center" 

18

경우 TextView's높이와 너비는 wrap content텍스트 내에서 다음 TextView항상 중앙에. 그러나 TextView's너비가 match_parent높이이고 높이가 match_parent아니면 wrap_content아래 코드를 작성해야합니다.

들어 RelativeLayout의 :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" 
        android:text="Hello World" />

</RelativeLayout>

들어 있는 LinearLayout :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hello World" />

</LinearLayout>

17

TextView에 중력을 사용하는 동안 API 레벨 17에서 구현되는 대체 방법이 있습니다.

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

차이점을 모르지만 작동합니다. 그러나 API 레벨 17 이상에만 해당됩니다.


차이점은 여기에 설명되어 있습니다 : stackoverflow.com/questions/16196444/…
jasdefer

이것은 TextView에서 텍스트를 중앙에 배치합니다. 중력을 사용하는 경우 텍스트 내용에 따라 약간의 후행 패딩이 있습니다. 예를 들어 텍스트가 중앙에 작은 원 배지가 있으면 매우 분명한 차이를 볼 수 있습니다.
tarrball

14

에서 RelativeLayout, 그것은 좋을 것입니다.

그리고 다른 Button그리고 당신이 추가 할 수있는 다른 것.

다음은 나를 위해 잘 작동합니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ff314859"
    android:paddingLeft="16dp"
    android:paddingRight="16dp">
    <TextView 
        android:id="@+id/txt_logo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="your text here"
        android:textSize="30dp"
        android:gravity="center"/>

        ...other button or anything else...

</RelativeLayout>

11

가장 쉬운 방법 (놀랍게도 의견에 언급되어 있으므로 왜 답변으로 게시하는지)은 다음과 같습니다.

textview.setGravity(Gravity.CENTER)

11

당신은 gravity당신의 텍스트 뷰를로 설정할 수 있습니다 CENTER.


10

TableLayout에서 TableRow의 텍스트를 가운데에 배치하려는 경우 다음과 같이하십시오.

<TableRow android:id="@+id/rowName"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:padding="5dip" >
    <TextView android:id="@+id/lblSomeLabel"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:gravity="center"
              android:layout_width="0dp"
              android:layout_weight="100"
              android:text="Your Text Here" />
</TableRow>

10

사용하다 android:textAlignment="center"

       <TextView
        android:text="HOW WAS\nYOUR\nDAY?"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:id="@+id/textView5"
         />

textAlignment = "center"는 TextView의 크기가 match_parent가 될 때까지 작업을 수행하지 않습니다.
SAurabh

위의 @SAurabh는 아무런 문제없이 작동합니다.
Chathura Wijesinghe

그것은 중력없이 부모 또는 레이아웃 중력 자체에서 작동합니까? 텍스트 정렬은 뷰 경계 내에서 텍스트를 정렬하지 않으므로이 경우 textView가 match_parent를 취할 때까지 부모 레이아웃이나 중력 자체에 중력이 없으면 이와 같이 보이지 않습니다
SAurabh

9

내 응용 프로그램에서 사용한 대답은 다음과 같습니다. 화면 중앙에 텍스트가 표시됩니다.

<TextView
    android:id="@+id/txtSubject"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/subject"
    android:layout_margin="10dp"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge" />

9

상대 레이아웃을 사용하는 경우 :

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_centerInParent="true"/>

LinearLayout을 사용하는 경우

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_gravity="center"/>

8

많은 답변에서 위와 같이 작동한다고 제안합니다.

android:gravity="center"

수직으로 중앙에 맞추려면 다음을 수행하십시오.

android:gravity="center_vertical"

또는 가로로 :

android:gravity="center_horizontal"


7

당신은 텍스트 중심을 얻기 위해 이렇게 할 수 있습니다

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

7

TextView의 높이와 너비는 내용을 감싸고 textview 내의 텍스트는 항상 가운데에 놓인 다음 다음을 사용하여 부모 레이아웃의 가운데에 놓습니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello.."/>
</RelativeLayout>

LinearLayout의 경우 코드도 동일합니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello.."/>
</LinearLayout>

그리고 문법적으로 부모는 RelativeLayout 자바 코드입니다. 런타임 시이 활동에서 이와 같은 것을 사용하십시오.

TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);

6

다음과 같은 여러 가지 방법으로이를 달성 할 수 있습니다.

XML 방법 01

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center_vertical|center_horizontal"
    android:text="@strings/text"
/>

XML 방법 02

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@strings/text"
/>

XML 방법 03

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:gravity="center"
    android:text="@strings/text"
/>

XML 방법 04

<TextView  
    android:id="@+id/textView"
    android:layout_height="match_parent"
    android:layout_width="wrap_content" 
    android:layout_centerInParent="true"
    android:text="@strings/text"
/>

자바 방법 01

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

자바 방법 02

textview.setGravity(Gravity.CENTER);

자바 방법 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

6

TextView 중력은 부모 레이아웃에 따라 작동합니다.

LinearLayout :

LinearLayout을 사용하면 두 가지 중력 속성 android : gravity & android : layout_gravity가 있습니다.

android : gravity : TextView 내부 텍스트의 레이아웃 부분을 나타내고 android : layout_gravity : 부모보기에서 TextView 위치를 나타냅니다.

여기에 이미지 설명을 입력하십시오

텍스트를 가로 및 세로 가운데로 설정하려면 아래 코드를 사용하십시오.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center_horizontal"
        android:layout_gravity="center_vertical"
        android:layout_height="wrap_content"
    />
</LinearLayout>

상대 레이아웃 :

RelativeLayout을 사용하면 TextView에서 아래 속성을 사용할 수 있습니다

TextView의 텍스트 센터에 대한 android : gravity = "center"

가로로 중앙에 배치하려는 경우 android : gravity = "center_horizontal"내부 텍스트입니다.

세로로 중앙에 배치하려는 경우 android : gravity = "center_vertical"내부 텍스트입니다.

android : layout_centerInParent = "true"부모보기의 중앙 위치에 TextView를 원하는 경우 android : layout_centerHorizontal = "true"부모보기의 가로 중앙에 TextView를 원하는 경우 android : layout_centerVertical = "true"부모 뷰의 세로 중앙에 TextView를 원하는 경우

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@android:color/background_light"
    android:layout_height="300dp">

    <TextView
        android:layout_width="match_parent"
        android:text="Hello World!"
        android:gravity="center"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content"
    />
</RelativeLayout>

Btw, 이전 개정으로 롤백 한 이유는 무엇입니까? 되 돌린 개정판은 편집기에서 언급 한 내용이 텍스트 편집기에서 인코딩 할 수 있도록하는 것이 좋습니다.
Edric

5

이 방법으로 시도하면 작동합니다.

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center_horizontal|center_vertical">

                    <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAlignment="center"
                    />

            </LinearLayout>

5

실제로 fontPadding을 제외하면 더 잘할 수 있습니다.

<TextView
  android layout_height="wrap_content"
  android layout_height="wrap_content"
  android:includeFontPadding="false"
  android:textAlignment="center"
/>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.