Как выровнять радио кнопку в центре экрана

Я использую Радио кнопки в качестве вкладки в моем приложении.

Я загрузил изображения для него, но они выравниваются по левой стороне. как заставить их выравниваться в центре.

enter image description here

Вот так выглядит мой XML-файл

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

  <LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <FrameLayout android:id="@android:id/tabcontent"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:layout_weight="1" 
      android:padding="20dip" 
      android:background="#fff"/>

    <RadioGroup android:layout_width="fill_parent"
      android:layout_height="wrap_content" 
      android:orientation="horizontal"
      android:checkedButton="@+id/allcontacts"
      android:id="@+id/contactgroup">


      <RadioButton android:id="@+id/allcontacts" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center" 
      android:layout_weight="1"/>

      <RadioButton
          android:id="@+id/categories"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center"
          android:layout_weight="1"/>

      <RadioButton android:id="@+id/favourites" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center" 
      android:layout_weight="1" />

    </RadioGroup>

    <TabWidget android:id="@android:id/tabs"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:layout_weight="0" android:visibility="gone" />
  </LinearLayout>
</TabHost>
</code>
 Naruto05 мая 2012 г., 19:58
Я хочу, чтобы вкладки появлялись внизу экрана. Если я использую виджет вкладок, вкладки выглядят выше, так что ..
 Barak05 мая 2012 г., 19:51
Просто любопытно, почему ты не используешь TabWidget?
 Barak05 мая 2012 г., 20:00
Никогда не думал об этом, отличная идея. Я рад, что спросил. Еще один трюк, чтобы запихнуть в мои записи. :)
 wviana05 апр. 2016 г., 22:49
У меня была похожая проблема, и я решил ее по-другому. Проверьте: / Stackoverflow.com вопросы / 36433050 / ...

Ответы на вопрос(11)

центру:

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/gray_percent"
    android:orientation="horizontal" >

    <FrameLayout
        android:layout_width="0dip"
        android:layout_height="wrap_content" 
         android:layout_weight="1">

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"

            android:button="@drawable/rb_temp1"
            android:checked="true"
            android:gravity="center" />
    </FrameLayout>

    <FrameLayout
        android:layout_width="0dip"
        android:layout_height="wrap_content" 
         android:layout_weight="1">

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"

            android:button="@drawable/rb_temp1"
            android:gravity="center" />
    </FrameLayout>

</RadioGroup>
 CoDe03 нояб. 2014 г., 08:47
но тогда как вы получите доступ к свойству радиогруппы, чтобы выбрать только одного ребенка.
 w3bshark12 окт. 2016 г., 20:02
Чтобы повторить проблему @Shubh, если вы используете этот метод центрирования радиокнопок, функциональность по умолчанию, позволяющая выбирать только одну радиокнопку за раз, НЕ будет работать. Вам придется вручную реализовать обработку, позволяющую проверять одну кнопку за раз. Поэтому я бы порекомендовал найти другой способ центрирования радиокнопок, если эта функциональность по умолчанию имеет для вас значение.

и я просто поставил android: paddingLeft = "0dp", и это сработало, поэтому вы должны попробовать android: paddingRight = "0dp" для радиокнопок

Решение Вопроса

android:gravity="center" в xml для каждой RadioButton.

Я вижу, что вы wrap_content, так что теоретически это ничего не должно делать, но похоже, что значки равномерно разделены, возможно, RadioGroup делит пространство равномерно, поэтому использование android: гравитация будет иметь эффект.

Думаю, стоит попробовать.

РЕДАКТИРОВАТ

Попробуй это

  <RadioButton android:id="@+id/allcontacts" 
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:marginLeft="20dp" 
  android:gravity="center"
  android:layout_weight="1"/>

Тебе придется поиграть сandroid:marginLeft="20dp" чтобы правильно отцентрировать, но это позволит вам делать то, что вы хотите сделать. Я скопировал ваш макет и протестировал на этот раз, поэтому я Ноу оно работает! :)

 Barak05 мая 2012 г., 21:10
Понял, проверь мой пересмотренный ответ. Используйте то, что я описал ранее, и добавьтеandroid:marginLeft="#dp" с # - все, что необходимо для перемещения изображения в центр.
 Naruto05 мая 2012 г., 20:49
Я пытался, но не смог получить ожидаемый результат:
 Barak05 мая 2012 г., 20:25
Еще раз подумал, обновил мой ответ.
 Naruto05 мая 2012 г., 20:19
Нет, это совсем не работает:
 Naruto05 мая 2012 г., 22:26
Да, Барак, это сработало ... Спасибо за вашу помощь ... Hav gr8 day:)
 <RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >
       <RadioButton
        android:id="@+id/rb1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="One"/>

        <RadioButton
        android:id="@+id/rb2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Two"/>
 </RadioGroup>
 w3bshark12 окт. 2016 г., 20:17
Я думаю, что это лучшее решение из всех. Установка ширины вwrap_content или до определенной постоянной ширины позволяет RadioButtons быть настолько широкими, насколько это необходимо, а RadioGroup центрировать весь набор RadioButtons. Отличная работа
 Urvi Jasani27 апр. 2015 г., 08:33
Он отлично работает для меня..

чтобы равномерно заполнить пространство между переключателями. В этом случае у меня есть 3 переключателя, которые выглядят по центру, красиво и аккуратно.

<RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <View
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <RadioButton
                android:id="@+id/radio0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="" />

            <View
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <RadioButton
                android:id="@+id/radio1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:checked="true"
                android:gravity="center"
                android:text="" />

            <View
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <RadioButton
                android:id="@+id/radio2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="" />

            <View
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </RadioGroup>
 Bolling26 мая 2014 г., 15:28
Спасибо Гарри, это правильно.
 Vishal Patel03 апр. 2017 г., 14:29
ohhohhoooohooooo ,, очень много
 Harry19 мая 2014 г., 08:52
Отличное решение! Но я использовал вместо TextView a View и для самого правого и левого вида android: layout_weight = "0.5".
 Soko03 мар. 2015 г., 10:48
Очень хорошее решение! Работает для пейзажа и портрета.
 Naruto03 авг. 2013 г., 21:10
Спасибо, что поделились примером

я понял ее, поэтому я попытаюсь объяснить это для вас.

above - это скриншот моего приложения, как вы можете видеть, я тоже сделал то же самое, у меня был экран выравнивания меню внизу, они RadioGroup и три RadionButton внутри, я хочу, чтобы каждый значок выравнивания по центру меню для RadionButton, теневого изображения (9-патч) отображаются вместе при срабатывании события проверки кнопки.
Сначала я использовалandroid: кнопкатрибут @ относится к селектируемому селектору, у селектора есть два нарисованных состояния между проверкой и снятием флажка, но я не могу выровнять центр значка меню и заставить RadionButton заполнить теневое изображение, они выглядят так:

Я пытался включитьandroid: layout_gravity = центр а такжеandroid: гравитация = центр с RadionButton, но это также не дало эффекта. после этого мой напарник сказал мandroid: кнопка атрибут относится к переднему плану, а не к фону, тогда я используюandroid: фон вместо тогоandroid: кнопка и это сработало, ниже мой код:

<RadioGroup android:layout_width="match_parent" android:layout_height="60dp"
        android:orientation="horizontal" android:background="@drawable/menu_bg">

    <RadioButton android:layout_width="0dp" android:layout_height="match_parent"
                 android:layout_weight="1" android:button="@null" android:checked="true"
                 android:background="@drawable/menu_item_selector" />

    <RadioButton android:layout_width="0dp" android:layout_height="match_parent"
                 android:layout_weight="1" android:button="@null"
                 android:background="@drawable/menu_item_selector" />

    <RadioButton android:layout_width="0dp" android:layout_height="match_parent"
                 android:layout_weight="1" android:button="@null"
                 android:background="@drawable/menu_item_selector" />

</RadioGroup>

the Menu_item_selector важная вещь, потому что она имеласила тяжест настройка:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/menu_item_layer_list" android:state_checked="true" />
    <item android:drawable="@drawable/menu_item_layer_list" android:state_pressed="true" />
    <item>
        <bitmap android:src="@drawable/menu_item_off" android:gravity="center" />
    </item>
</selector>

Потому что у меня было два изображения для рисования, когда пользователь проверял состояние кнопки «Поворот», фоновое изображение тени и изображение активного состояния значка, поэтому я использовал для этого слой-список, активный значок также имелсила тяжест настройка, ниже Menu_item_layer_list код:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/menu_bg_pressed" />
    <item>
        <bitmap android:src="@drawable/menu_item_on" android:gravity="center" />
    </item>
</layer-list>

Я не знаю, было ли это решение идеальным или нет, потому что я всегда реализую его как представление и рисую сам. Но я думаю, что Android SDK предоставляет более удобный компонент, давайте закончим работу с конфигурацией xml, мы должны изучить его и использовать.

 baske22 мая 2014 г., 15:09
лучшее решение на сегодняшний день! особенно для android: gravity = "center" вещь в тегах <item /> для вашего селектора была для меня настоящей новостью! недурно
 Johan20 авг. 2013 г., 13:53
Довольно элегантное решение. Благодарность
 Yazon200609 янв. 2016 г., 22:09
android: button = "@ null" здесь главное!

я использовал эту строку в моемRadioGroup и работает нормально!

android:gravity="center|left" 
 Naruto11 сент. 2013 г., 08:01
Спасибо, спасибо, что поделились.

Я нашел лучшее решение, которым хотел бы поделиться. Установите кнопку на@null; затем добавьте drawable кandroid:drawableTop или любой другой тип позиции. Это позволит нам установить drawables в другое положение radioButton. Добавь немногоpadding илиdrawablePadding чтобы он не прилипал к какой-либо стороне кнопки / текста.

android:background="@drawable/background_paint"
android:drawableTop="@drawable/shape"
android:button="@null"
 Cristofer28 сент. 2017 г., 22:28
Ты был прав! Просто я добавил конкретныйрос + android: MinHeight + android: paddingTop! = Центр изображения выглядит красиво! Спасибо

ил им выровнять их по центру с помощью набора android: background будет иметь некоторое значение, например @null или некоторый цвет. ниже был мой макет

<LinearLayout
    android:id="@+id/tab"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal" >

    <RadioGroup
        android:paddingTop="5dp"
        android:id="@+id/radioGroupAsTab"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center_vertical|center_horizontal"
        android:background="@color/v3_header_bg"
        android:fadingEdge="none"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/rbDiagnose"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:button="@null"
            android:checked="true"
            android:drawableTop="@drawable/v3_tab_diagnose"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:text="@string/tabCaption_health_maintenance"
            android:textColor="@color/radio_astab_changecolor"
            android:textSize="10sp"
            android:textStyle="bold" />

        <RadioButton
            android:id="@+id/rbHistory"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:button="@null"
            android:drawableTop="@drawable/v3_tab_history"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:text="@string/tabCaption_history"
            android:textColor="@color/radio_astab_changecolor"
            android:textSize="10sp"
            android:textStyle="bold" />

        <RadioButton
            android:id="@+id/rbChart"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:button="@null"
            android:drawableTop="@drawable/v3_tab_chart"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:text="@string/tabCaption_graph"
            android:textColor="@color/radio_astab_changecolor"
            android:textSize="10sp"
            android:textStyle="bold" />

        <RadioButton
            android:id="@+id/rbCyclopedia"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:button="@null"
            android:drawableTop="@drawable/v3_tab_encyclopedia"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:text="@string/tabCaption_encyclopedia"
            android:textColor="@color/radio_astab_changecolor"
            android:textSize="10sp"
            android:textStyle="bold" />

        <RadioButton
            android:id="@+id/rbSetting"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:button="@null"
            android:drawableTop="@drawable/v3_tab_setting"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:text="@string/tabCaption_info"
            android:textColor="@color/radio_astab_changecolor"
            android:textSize="10sp"
            android:textStyle="bold" />
    </RadioGroup>
</LinearLayout>

center" на теге радиогруппы. Это работает

android:layout_gravity="center_horizontal"на вашейRadioGroup.

Ваш ответ на вопрос