RelativeLayout에서 버튼을 중앙에 배치 할 수 있습니까?


174

상대 레이아웃에서 버튼을 중앙에 배치하려고하는데 이것이 가능합니까? 나는 중력 및 방향 기능을 시도했지만 아무것도하지 않습니다.


1
언어? 뼈대? OS?
Arnold Spence

3
@Arnold Spence : 당신은 24 초 저를 이겼습니다 :)
Nippysaurus

3
스택 오버플로를 사용한 것은 이번이 처음입니다. 예, Android 용으로 개발 중입니다. =)
아카디아

7
가능성 없음. 올바른 태그는 올바른 사람들의 주목을 더 빨리받습니다. 고정 :)
아놀드 스펜스

8
사려 깊게 아놀드 스펜스에게 +1. SO에 속한 일부 사람들은 "새"라는 말로 OP를 구두로 파괴했을 것입니다.
Subby

답변:


370

시험

android:layout_centerHorizontal="true"

정확히 이와 같이 작동합니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ff0000">

    <Button
        android:id="@+id/btn_mybutton"
        android:layout_height="wrap_content"
        android:layout_width="124dip"
        android:layout_marginTop="5dip"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

5
너비에 대해 match_parent가 있으면 작동하지 않습니다.
Ghoti

2
너비에 대해 match_parent가있는 경우 너비가 이미 가운데에 있습니다.
ataulm

103

상대 레이아웃에 CENTER_IN_PARENT를 사용할 수 있습니다.

android:layout_centerInParent="true"RelativeLayout의 중앙에 배치하려는 요소에 추가


그것은 수평 및 수직 중심입니다. 어떻게 'bout layout_centerHorizontal = true
user3076750

37

아카디아, 아래 코드를 사용해보십시오. 원하는 결과를 얻을 수있는 몇 가지 방법이 있습니다. 이것은 쉬운 방법 중 하나입니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:gravity="center">

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"/>
</RelativeLayout>

RelativeLayout 자체의 중력을 설정하면 그 안에 배치 된 모든 개체에 영향을줍니다. 이 경우에는 버튼 일뿐입니다. 물론 여기서 중력 설정을 사용할 수 있습니다 (예 : center_horizontal, top, right 등).

아래 코드를 사용할 수도 있습니다 :

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

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"
        android:layout_centerInParent="true"/>
</RelativeLayout>

1
감사. 그러나 여러 개의 버튼이 있고 하나의 중앙 집중식 만 원한다면 어떻게해야합니까? 첫 번째 코드는 부모 relativelayout 내의 모든 것을 중심에 둡니다. 또한 행 상단에 단추를 어떻게 가운데에 놓을 수 있습니까?
아카디아

두 번째 예를 사용하고 가운데에 놓으려는 버튼에만 centerInParent를 추가하십시오. centerHorizontal 및 layout_alignParentTop을 사용하여 상단에 정렬하고 수평으로 가운데에 맞출 수 있습니다. 정확히 달성하려는 것은 더 나은 예를 줄 수 있습니다.
Kevin Coppock

나는 안드로이드 개발에 대한 연구를 거의 시작하지 않고 내가 원하는 것을하기 위해 일을 조작하는 방법을 완전히 이해하려고 노력하고 있습니다. 기본적으로 그림이 다른 화면 유형 / 해상도에서 매우 다르게 보일 수 있기 때문에 픽셀과 물건을 정렬하지 않으려 고합니다. 그러나, 중력 명령을 사용하면 모든 것이 명령을 따릅니다. ignoreGravity를 사용하여 버튼의 중력을 비활성화하려고 시도했지만 작동하지 않았습니다. 이 물건은 매우 까다 롭습니다.
아카디아

네, 분명히 가능합니다. 특정 레이아웃을 수행하는 방법은 많이 있습니다. 가장 좋은 방법은 머리에 원하는 방식으로 스케치하고 거기에서 나가는 것입니다. 이 빠른 튜토리얼도 도움이 될 것입니다. developer.android.com/resources/tutorials/views/…
Kevin Coppock

네, 실제로 그 튜토리얼을하고있었습니다. 각 자습서를 살펴보고 완전히 조작하는 방법을 배웁니다. 그렇지 않으면 각 자습서가 어떻게 다른지 알 수 없습니다.
아카디아

25

요약

첨가:

android:layout_centerInParent="true"

다음 속성 중 하나가보기에 설정된 경우 RelativeLayout에서 작동합니다.

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"

자식보기를 부모보기에 정렬합니다. "중심"은 선택한 정렬 축을 기준으로합니다.

왼쪽 / 오른쪽-> 세로

위 / 아래-> 가로

뷰 내에서 어린이 / 콘텐츠의 중력 설정 :

android:gravity="center"

정렬 집합이없는 경우, 부모보기 내부에서 자식을 중앙에 배치합니다. 선택 사항 :

<!-- Axis to Center -->
android:gravity="center_horizontal"
android:gravity="center_vertical"

<!-- Alignment to set-->
android:gravity="top"
android:gravity="bottom"
android:gravity="left"
android:gravity="right"
android:gravity="fill"
...

그렇다면 :

android:layout_gravity="center"

부모 내부의보기 자체를 중심으로합니다.

그리고 마지막으로 부모보기에 다음 속성을 추가 할 수 있습니다.

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

7

android:centerInParent="true"상대 레이아웃에서 뷰를 중앙에 배치하려면 뷰 안에 속성을 사용하십시오 .

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NWE"
        android:textSize="30dp"/>
</RelativeLayout>

5

쉬워요, 아무 것도 맞지 마세요

<Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_centerInParent="true"
        android:text="Centered Button"/>


2

방향 중 하나에 가운데 정렬하려면 자식 레이아웃에서 android : layout_centerHorizontal = "true"또는 android : layout_centerVertical = "true"를 사용하십시오.


1

android : layout_alignParentStart = "true"와 같은 정렬을 제거하고 centerInParent를 추가하면 나에게 도움이되었습니다. "정렬"이 유지되면 centerInParent가 작동하지 않습니다


1

정말 쉽습니다. 아래 코드를 사용해보십시오

<RelativeLayout
    android:id="@+id/second_RL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/first_RL"
    android:background="@android:color/holo_blue_bright"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</RelativeLayout>

1
코드 전용 답변은 여기서 환영하지 않습니다. 위의 답변이 효과가있는 이유에 대한 자세한 내용을 게시하십시오. :)
Vivz

지침 감사합니다. 나는 여기 새로 왔어요.
Primesh

0

부모보기의 왼쪽 또는 오른쪽에 정렬해야합니다

android:centerInParent="true"코드를 사용할 때 다음 중 하나를 사용하지 마십시오 .

android:layout_alignParentLeft="true"

android:layout_alignParentLeft="true"

android:layout_alignRight=""

기타

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