2010-09-20 4 views
139

Я пытаюсь центрировать кнопку в относительной компоновке, возможно ли это? Я пробовал функции Gravity and Orientation, но они ничего не делают.Можете ли вы сосредоточить кнопку в RelativeLayout?

+1

Язык? Фреймворк? ОПЕРАЦИОННЫЕ СИСТЕМЫ? –

+0

Какой язык/каркас/etc вы используете? – Nippysaurus

+2

@ Арнольд Спенс: вы избили меня на 24 секунды :) – Nippysaurus

ответ

298

Попробуйте

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

Это не сработало. – Arcadia

+23

Этот DID работает для меня. Благодарю. –

+1

Работал для меня тоже ,,, почему они не отмечают это как ответ .. – Naruto

86

Вы можете использовать CENTER_IN_PARENT для относительного расположения.

Добавить android:layout_centerInParent="true" к элементу, который вы хотите, чтобы центр в RelativeLayout

+2

Где я могу это положить? – Arcadia

+2

@josnidhin: это правильный ответ. – Ashwin

+0

Правильно;) Спасибо :) – androniennn

34

Arcadia, просто попробуйте код, приведенный ниже. Есть несколько способов получить результат, который вы ищете, это один из самых простых способов.

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

Спасибо. Однако, если бы у меня было несколько кнопок и мне хотелось только сосредоточиться, как бы я это сделал? Первый код будет центрировать все внутри родительского релятивирования. Кроме того, как я мог бы центрировать кнопку в верхней части ее строки? – Arcadia

+0

Просто используйте второй пример и добавьте centerInParent к кнопке, которую хотите центрировать. Вы также можете использовать centerHorizontal и layout_alignParentTop, чтобы выровнять его вверх и центрировать по горизонтали. Что именно вы пытаетесь достичь, я могу привести лучший пример. – kcoppock

+0

Я только начинаю изучать развитие Android и пытаюсь полностью понять, как манипулировать вещами, чтобы делать то, что я хочу. В основном я хочу держаться подальше от выравнивания предметов с пикселями, потому что изображение может выглядеть очень по-разному на другом типе/разрешении экрана. Однако, когда вы используете команду гравитации, все следует за ней. Я попытался отключить гравитацию для кнопки, используя ignoreGravity, и это не сработало. Этот материал очень сложный. – Arcadia

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"/>

1

Удаление любого выравнивания, как андроида: layout_alignParentStart = "истинный »и добавление центраInParent работало для меня. Если «выравнивать» остается внутри, centerInParent не работает

2

Для выравнивания по центру в одном из использования направления андроида: layout_centerHorizontal = «истина» или андроид: layout_centerVertical = «истина» в макете детской

4

Используйте атрибут 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> 
+0

Рекомендуется использовать 'match_parent' вместо' fill_parent'. 'fill_parent' устарел, начиная с API 8 – RediOne1

0

вы должны выровняли его влево или вправо от родительского вида

не использовать любой из них при использовании android:centerInParent="true" коды: -

android:layout_alignParentLeft="true"

android:layout_alignParentLeft="true"

android:layout_alignRight=""

и т. Д.

13

Обобщенная

Добавление:

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" 

который alignes мнение ребенка к родительскому виду. "Центр" основан на оси alignement вы выбрали:

влево/вправо -> вертикальный

верх/низ -> горизонтальная

Установка тяжести Чайлдс/Содержимое внутри поля зрения:

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

+0

Спасибо за руководство. Я здесь новый. –

Смежные вопросы