Ben çemberinin rengini değiştirmek istediğiniz RadioButton benim birinde projeye Sete hangi özelliği anlayamadık. Sahip olduğum arka plan rengi siyahtır, bu yüzden görünmez olur. Dairenin rengini beyaz olarak ayarlamak istiyorum.
Ben çemberinin rengini değiştirmek istediğiniz RadioButton benim birinde projeye Sete hangi özelliği anlayamadık. Sahip olduğum arka plan rengi siyahtır, bu yüzden görünmez olur. Dairenin rengini beyaz olarak ayarlamak istiyorum.
Yanıtlar:
Daha basit, sadece buttonTint rengini ayarlayın: (sadece api seviyesi 21 veya üstü üzerinde çalışır)
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
değerlerinizde / renklerinizde.
<color name="your_color">#e75748</color>
Sonuç:
Kod ile yapmak istiyorsanız (ayrıca api 21 ve üstü):
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
}
control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);
nerede control
olduğunu ve istediğiniz color
rengin tamsayı bir değer olduğunu kullanmalısınızR.color.red
android.R.attr.state_checked
ekleyebilir ve rengi ekleyebilirsiniz.
Güncelleme: 1. bunun yerine bunu kullanın
<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. Ardından otomatik olarak eklemek için bu satırı üst düzene veya Alt + Enter
Android Studio'ya ekleyin
xmlns:app="http://schemas.android.com/apk/res-auto"
Minimum Örnek şu şekilde görünmelidir:
<?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. Programınızda böyle çağırmalısınız.
AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
Temel olarak, bu tür desen AppCompatCheckBox, AppCompatButton ve benzeri gibi tüm AppCompact türleri için uygulanabilir.
Eski Cevap:
Android API 21'in altında desteklemek için AppCompatRadioButton'u kullanabilirsiniz . Sonra setSupportButtonTintList
rengi değiştirmek için yöntemi kullanın. Bu, radyo düğmesi oluşturmak için kod snippet'im.
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'da test edilen sonuç:
Daha fazla ayrıntı için android referans bağlantısına bakın .
<android.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
kullanmak istemediğiniz özel bir yöntemdir. Radyo düğmeleri, Android'in belirli sürümlerinde garip davranacaktır. Bunun yerine kullanın CompoundButtonCompat.setButtonTintList(rb, colorStateList)
.
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
API üzerinde çalışmak iyi yazı 21 kadar 21 öncesi
senin içinde styles.xml
koymak:
<!-- 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>
Sizin radio button
xml gibi görünmelidir:
<RadioButton
android:layout_width="wrap_content"
style="@style/radionbutton"
android:checked="false"
android:layout_height="wrap_content"
/>
Şimdi tüm is a yapmak yapmanız gereken radiobutton_drawable.xml
Gözlerinde farklı drawable folder
. İçine koymanız gerekenler:
<?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>
Sizin 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>
Sizin 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>
Sadece @color/colorAccent
istediğiniz renkle değiştirin .
Bu kodu kullanmanız gerekir:
<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" />
Kullanılması app:buttonTint
yerine android:buttonTint
ve ayrıca android.support.v7.widget.AppCompatRadioButton
yerine Radiobutton
!
Styles.xml dosyanızda özel stil bildirin.
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
Bu stili android: tema özelliği ile RadioButton'ınıza uygulayın.
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio Button"
android:theme="@style/MyRadioButton"/>
sadece etkinliğiniz uzarsa AppCompatActivity
<item name="android:colorControlActivated">@color/pink</item>
için çalışmak için kullanmalıydım . Hala neden olduğundan emin değilim. Aksi takdirde, bu iyi bir cevaptır.
API 21 altında
Özel stil oluşturma 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>
Düzen kullanım temasında:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButton" />
API 21 ve daha fazlası için
Sadece buttonTint'i kullanın
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/green" />
Soru eski ama bence cevabım insanlara yardım edecek. Xml'deki stili kullanarak radyo düğmesinin işaretlenmemiş ve işaretli durumunun rengini değiştirebilirsiniz.
<RadioButton
android:id="@+id/rb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButtonStyle" />
Style.xml içinde
<style name="RadioButtonStyle" parent="Theme.AppCompat.Light">
<item name="colorAccent">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
İstediğiniz renkleri bu stilde ayarlayabilirsiniz.
buttonTint
Özelliği ayarlayın . Örneğin android:buttonTint="#99FF33"
,.
Bu şekilde kısa bir yol yaptım (21 öncesi ve 21 numaralı API üzerinde çalışma)
Xml'deki radyo düğmeniz şöyle görünmelidir
<RadioButton android:id="@+id/radioid"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:button="@drawable/radiodraw" />
radiodraw.xml dosyasında
<?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>
denetlenmeyen durumu çizmek için şeffaf renk eklemeniz gerekir, aksi takdirde katı siyah oval çizin.
Bazen sadece colorControlNormal'ı şu şekilde geçersiz kılmanız gerekir :
<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>
Ve böyle bir düğme alacaksınız:
colorControlNormal , denetlenmeyen durum için kullanılır ve kontrol için colorAccent .
Bunun için bir xml özelliği var:
android:buttonTint="yourcolor"
"Make sure your min API is higher then 21 or this won't work"
bu yanlış. AndroidX ile API 17'yi hedefliyorum ve bu benim için işe
Devre dışı bırakma, işaretleme ve etkinleştirme durumlarını değiştirmek isteyenler için aşağıdaki adımları uygulayın:
<!-- Or androidX radio button or material design radio button -->
<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/radio_button_color" />
daha sonra color res klasöründe "radio_button_color.xml" adlı bir dosya oluşturun:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow900" android:state_selected="true" />
<item android:color="@color/yellow800" android:state_checked="true" />
<item android:color="@color/gray800" android:state_enabled="false" />
<item android:color="@color/yellow800" android:state_enabled="true" />
</selector>
RadioButton varsayılan olarak res / valu / colors.xml dosyasında colorAccent rengini alır. Bu dosyaya gidin ve
<color name="colorAccent">#3F51B5</color>
istediğiniz renge.
En kolay yol colourAccent
rengi değiştirmektir , values->colours.xml
ancak metin imleci rengini düzenleme gibi diğer şeyleri de değiştireceğini unutmayın.
< color name="colorAccent">#75aeff</color >
Tıklanan ve tıklanmayan radyo düğmesi için farklı bir renk ayarlamak istiyorsanız sadece şunu kullanın:
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"/>
android:buttonTint="@color/colorPrimary"
etiketi üzerinde sadece nitelik kullanın , yardımcı olacağını umuyoruz
Bu sorunu yaşadım. Uygulamanızın siyah bir arka planı varsa ve arka plan nedeniyle görünmeyen çok sayıda RadioButtons varsa, android'i düzenlemek karmaşıktır: buttonTint her birinin rengi, en iyi çözüm styles.xml dosyanızdaki ana temayı değiştirmektir
Değiştim
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
için
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
Böylece RadioButtons'un daireleri daha açık bir gri gölgesi haline geldi ve şimdi siyah bir arka planla bile görülebilirler.
Bu benim style.xml dosyam:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
@ jh314 doğru. AndroidManifest.xml'de,
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"></application>
Style.xml içinde
<!-- 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>
öğe adı colorAccent olmalıdır, uygulamanın widget'larının varsayılan rengine karar verir.
Ancak koddaki rengi değiştirmek isterseniz, @ aknay'ın cevabı doğrudur.