2010-09-20 14 views

Odpowiedz

298

Spróbuj

android:layout_centerHorizontal="true" 

dokładnie jak to działa dla mnie:

<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> 
+3

To nie zadziałało. – Arcadia

+23

To DID działa dla mnie. Dzięki. –

+1

Pracowałem też dla mnie ,,, dlaczego nie zaznaczają tego jako odpowiedzi .. – Naruto

86

Można użyć CENTER_IN_PARENT dla układu względnej.

Dodaj android:layout_centerInParent="true" do elementu, który chcesz wyśrodkować w RelativeLayout

+2

Gdzie mam to umieścić? – Arcadia

+2

@josnidhin: to jest właściwa odpowiedź. – Ashwin

+0

Prawidłowo;) Dzięki :) – androniennn

34

Arcadia, po prostu spróbuj poniższy kod. Istnieje kilka sposobów na uzyskanie oczekiwanego wyniku, jest to jeden z łatwiejszych sposobów.

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

Ustawienie ciężaru samego RelativeLayout wpłynie na wszystkie umieszczone w nim obiekty. W tym przypadku jest to po prostu przycisk. Oczywiście możesz użyć dowolnego ustawienia grawitacji (na przykład center_horizontal, top, right i tak dalej).

Można również użyć tego kodu poniżej:

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

Dzięki. Jednakże, gdybym miał wiele przycisków i chciał tylko jeden wyśrodkowany, jak bym to zrobił? Pierwszy kod wyśrodkowywałby wszystko w obrębie rodzica relacyjnego. W jaki sposób mogę wyśrodkować przycisk u góry tego rzędu? – Arcadia

+0

Po prostu użyj drugiego przykładu i dodaj środkową kropkę do przycisku, który chcesz wyśrodkować. Możesz także użyć centerHorizontal, a layout_alignParentTop, aby wyrównać go do góry i wyśrodkować w poziomie. Co dokładnie próbujesz osiągnąć, mogę podać lepszy przykład. – kcoppock

+0

Ledwo rozpoczynam moje studia nad rozwojem Androida i próbuję w pełni zrozumieć, jak manipulować rzeczami, aby robić to, co chcę. Zasadniczo chcę trzymać się z dala od dopasowywania elementów do pikseli, ponieważ obraz może wyglądać zupełnie inaczej na innym typie/rozdzielczości ekranu. Jednakże, gdy używasz polecenia grawitacji, wszystko podąża za nim. Próbowałem wyłączyć grawitację dla przycisku za pomocą ignorowania Grawitacji i nie działało. Te rzeczy są bardzo trudne. – Arcadia

5

Jego proste, nie Dopasuj go do niczego

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

1

usuwając wszelkie wyrównanie jak android: layout_alignParentStart = "true "i dodanie centerInParent działało dla mnie. Jeśli "align" pozostaje w The centerInParent nie działa

2

Aby wyśrodkować wyrównać w jednej z wykorzystaniem kierunek Androidzie: layout_centerHorizontal = "true" lub android: layout_centerVertical = "true" w układzie dziecięcej

4

Użyj atrybutu android:centerInParent="true" wewnątrz widoku, , gdy chcesz wyśrodkować widok w układzie Względny.

<?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> 
+0

Zalecane jest używanie 'match_parent' zamiast' fill_parent'. 'fill_parent' jest przestarzałe, począwszy od API 8 – RediOne1

0

trzeba mieć wyrównane go w lewo lub prawo widzenia dominującej

podczas korzystania android:centerInParent="true" kody nie używać dowolnego z nich: -

android:layout_alignParentLeft="true"

android:layout_alignParentLeft="true"

android:layout_alignRight=""

itp.

13

Podsumowując

dodania:

android:layout_centerInParent="true" 

prostu działa na RelativeLayout, jeśli jeden z następujących atrybutów jest także zestaw do widoku:

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

który alignes widok dziecka do widoku rodzica. "Centrum" jest oparty na osi alignement zostały wybrane:

lewo/prawo -> pionowe

góra/dół -> poziome

Ustawianie wagi Childs/treść wewnątrz widoku:

android:gravity="center" 

wyśrodkowuje dziecko w widoku rodzica w każdym przypadku, jeśli nie ma zestawu wyrównania. Opcjonalnie można wybrać:

<!-- 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" 
... 

Wtedy nie ma:

android:layout_gravity="center" 

który jest centrowanie widoku się wewnątrz niej znajduje się rodzic

I wreszcie można dodać następujący atrybut aby rodzice:

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

To naprawdę łatwe. Wypróbuj poniższy kod,

<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

Odpowiedzi tylko na kod nie są tutaj mile widziane. Spróbuj zamieścić więcej informacji, dlaczego powyższa odpowiedź zadziała. :) – Vivz

+0

Dzięki za wytyczną. Jestem tu nowy. –

Powiązane problemy