Изменить цвет круга радиокнопки

Я хочу изменить цвет круга RadioButton, я не мог понять, какое свойство установить. Цвет фона у меня черный, поэтому он становится невидимым. Я хочу установить цвет круга на белый.

Ответ 1

Проще говоря, просто установите цвет buttonTint: (работает только на уровне API 21 или выше)

<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:checked="true"
    android:buttonTint="@color/your_color"/>

в ваших values /colors.xml поместите ваш цвет в этом случае красноватый:

<color name="your_color">#e75748</color>

Результат:

Colored Android Radio Button

Если вы хотите сделать это с помощью кода (также API 21 и выше):

if(Build.VERSION.SDK_INT>=21)
{

    ColorStateList colorStateList = new ColorStateList(
            new int[][]{

                    new int[]{-android.R.attr.state_enabled}, //disabled
                    new int[]{android.R.attr.state_enabled} //enabled
            },
            new int[] {

                    Color.BLACK //disabled
                    ,Color.BLUE //enabled

            }
        );                       


    radio.setButtonTintList(colorStateList);//set the color tint list
    radio.invalidate(); //could not be necessary
}

Ответ 2

Этот сайт действительно хорош для настройки компонентов Android в целом: http://android-holo-colors.com/

Просто выберите радиокнопку, сделайте цвет белым, загрузите и получите прибыль!

Дополнительная информация

Если после этого вы не видите свое запрошенное изменение. Затем вы должны убедиться, что "Какая ваша тема" применяется в AndroidManifest.xml.

Также см., что вы применили любой стиль к activity?

просто очистите эти вещи, и это будет работать на 100% правильно.

Ответ 3

Update: 1. используйте это вместо

   <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbtn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:buttonTint="@color/primary" />

2. Затем добавьте эту строку в родительский макет или Alt + Enter в Android Studio для автоматического добавления  xmlns:app="http://schemas.android.com/apk/res-auto"

Минимальный пример должен выглядеть так:

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

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbtn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:buttonTint="@color/primary" />

</LinearLayout>

3. В вашей программе нужно позвонить так. AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);

В принципе, этот тип шаблона может применяться для всех типов AppCompact, таких как AppCompatCheckBox, AppCompatButton и т.д.

Старый ответ:

Чтобы поддерживать API android API 21, вы можете использовать AppCompatRadioButton.. Затем используйте метод setSupportButtonTintList для изменения цвета. Это мой фрагмент кода для создания переключателя.

    AppCompatRadioButton rb;
    rb = new AppCompatRadioButton(mContext);

    ColorStateList colorStateList = new ColorStateList(
            new int[][]{
                    new int[]{-android.R.attr.state_checked},
                    new int[]{android.R.attr.state_checked}
            },
            new int[]{

                    Color.DKGRAY
                    , Color.rgb (242,81,112),
            }
    );
    rb.setSupportButtonTintList(colorStateList);

Протестированный результат в API 19:

Этот тест проверяется на API 19

Подробнее см. ссылку android ссылка.

Ответ 4

<android.support.v7.widget.AppCompatRadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />

Ответ 5

Работа с API до 21, а также сообщение 21. В styles.xml поставьте:

<!-- custom style -->
<style name="radionbutton"
       parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
    <item name="android:button">@drawable/radiobutton_drawable</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>

Ваш radio button в xml должен выглядеть так:

<RadioButton
    android:layout_width="wrap_content"
    style="@style/radionbutton"
    android:checked="false"
    android:layout_height="wrap_content"
    />

Теперь вам нужно сделать radiobutton_drawable.xml в drawable folder. Вот что вам нужно вставить:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="true"/>
  <item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="false"/>
  <item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="true"/>
  <item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="false"/>
</selector>

Ваш radio_unchecked.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="oval">
  <stroke android:width="1dp" android:color="@color/colorAccent"/>
  <size android:width="30dp" android:height="30dp"/>
</shape>

Ваш radio_checked.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="oval">
      <stroke android:width="1dp" android:color="@color/colorAccent"/>
      <size android:width="30dp" android:height="30dp"/>
    </shape>
  </item>
  <item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
    <shape android:shape="oval">
      <solid android:width="1dp" android:color="@color/colorAccent"/>
      <size android:width="10dp" android:height="10dp"/>
    </shape>
  </item>
</layer-list>

Просто замените @color/colorAccent на цвет по вашему выбору.

Ответ 6

Вы должны использовать этот код:

<android.support.v7.widget.AppCompatRadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:buttonTint="@color/black"
                    android:text="Radiobutton1"
                    app:buttonTint="@color/black" />

Использование app:buttonTint вместо android:buttonTint а также android.support.v7.widget.AppCompatRadioButton вместо Radiobutton !

Ответ 7

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

<RadioButton
    android:id="@+id/rb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/RadioButtonStyle" />

В style.xml

<style name="RadioButtonStyle" parent="Theme.AppCompat.Light">
        <item name="colorAccent">@android:color/white</item>
        <item name="android:textColorSecondary">@android:color/white</item>
</style>

Вы можете установить желаемые цвета в этом стиле.

Ответ 8

Задайте свойство buttonTint. Например, android:buttonTint="#99FF33".

Ответ 9

Я сделал это коротко, как это (работа над API до 21, а также сообщение 21)

Ваш переключатель в xml должен выглядеть следующим образом:

  <RadioButton android:id="@+id/radioid"                    
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"                 
                android:button="@drawable/radiodraw" />

в radiodraw.xml

  <?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">    
      <item android:state_checked="false" >
          <shape  android:shape="oval" >
              <stroke android:width="1dp" android:color="#000"/>
              <size android:width="30dp" android:height="30dp"/>
              <solid android:color="@android:color/transparent"/>
          </shape>
      </item>
      <item android:state_checked="true">
          <layer-list>
              <item>
                  <shape android:shape="oval">
                      <stroke android:width="1dp" android:color="#000"/>
                      <size android:width="30dp" android:height="30dp"/>
                      <solid android:color="@android:color/transparent"/>
                  </shape>
              </item>
              <item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
                  <shape android:shape="oval">
                      <solid android:width="1dp" android:color="#000"/>
                      <size android:width="10dp" android:height="10dp"/>
                  </shape>
              </item>
          </layer-list>
      </item>
  </selector>

нужно добавить цвет прозрачным для рисования непроверенного состояния, а еще он нарисовать сплошной черный овал.

Ответ 10

Для него есть атрибут xml:

android:buttonTint="yourcolor"

Ответ 11

Для по API 21

Создать собственный стиль RadioButton style.xml

 <style name="RadioButton" parent="Theme.AppCompat.Light">
     <item name="colorAccent">@color/green</item>
     <item name="android:textColorSecondary">@color/mediumGray</item>
     <item name="colorControlNormal">@color/red</item>
 </style>

В макете используйте тему:

<RadioButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:theme="@style/RadioButton" />

Для API 21 и более

Просто используйте buttonTint

 <RadioButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:buttonTint="@color/green" />

Ответ 12

Иногда вам просто нужно переопределить colorControlNormal следующим образом:

    <style name="RadioButtonStyle" parent="AppTheme">
       <item name="colorControlNormal">@color/pink</item>
       <item name="colorAccent">@color/colorPrimary</item>
       <item name="android:textColorSecondary">@color/black</item>
    </style>

И вы получите такую ​​кнопку:

введите описание изображения здесь

colorControlNormal используется для неконтролируемого состояния и colorAccent для отмеченных.

Ответ 13

  • Объявить пользовательский стиль в файле styles.xml.

    <style name="MyRadioButton" parent="Theme.AppCompat.Light">  
      <item name="colorControlNormal">@color/indigo</item>
      <item name="colorControlActivated">@color/pink</item>
    </style>  
    
  • Примените этот стиль к вашему RadioButton через атрибут android: theme.

    <RadioButton  
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="Radio Button"
        android:theme="@style/MyRadioButton"/>
    

    только если ваша деятельность расширяет AppCompatActivity

Ответ 14

<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:buttonTint="@color/my_color"/>

Кнопка "Все" изменит цвет, поле круга и центральную проверку.

Ответ 15

RadioButton по умолчанию принимает цвет colorAccent в файле res/values ​​/colors.xml. Поэтому перейдите к этому файлу и измените значение

<color name="colorAccent">#3F51B5</color>

к цвету, который вы хотите.

Ответ 16

Самый простой способ - изменить цвет colourAccent в values->colours.xml
но имейте в виду, что это также изменит другие вещи, такие как редактирование цвета курсора текста и т.д.

< color name="colorAccent">#75aeff</color >

Ответ 17

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

   android:buttonTint="@drawable/radiobutton"  in xml of the radiobutton and your radiobutton.xml will be:  
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#1E88E5"/>
<item android:state_checked="true" android:color="#00e676"/>
<item android:color="#ffffff"/>

Ответ 18

просто используйте android:buttonTint="@color/colorPrimary" для тега, надеюсь, это поможет

Ответ 19

@jh314 верен. В AndroidManifest.xml

 <application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"></application>

В style.xml

  <!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorAccent">@color/red</item>
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

имя элемента должно быть colorAccent, оно определяет цвет виджета приложений по умолчанию.

Но если вы хотите изменить цвет в коде, возможно, ответ @aknay правильный.