Я хочу изменить цвет круга 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>
Результат:
Если вы хотите сделать это с помощью кода (также 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:
Подробнее см. ссылку 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 правильный.