2015-02-03 13 views
12

Używam Androida Studio. Potrzebuję zmienić kolor przycisku Radio, po zmianie wartości Odcień Przyciemnienia na tę, której potrzebuję działa na podglądzie, ale gdy tylko uruchomię aplikację na urządzeniu, przycisk jest standardowym kolorem zielonym/niebieskim.Nie można zmienić koloru przycisku Radio na Androidzie

Czy jest to jakiś problem z poziomem interfejsu API urządzenia? Jeśli tak, czy można zmienić kolor starszych urządzeń?

Odpowiedz

2

Zakładając, że używasz AppCompat w aplikacji wystarczy dodać poniżej zasięgu styles.xml

<item name="colorAccent">@color/blue</item> 

Teraz niebieski colorAccent zostanie ustawiona, wystarczy zmienić kolor na dowolny kolor chcesz.

Np cała style.xml

<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/accent_material_dark</item> 
     <item name="colorPrimaryDark">@color/accent_color_dark</item> 
     <item name="colorAccent">@color/accent_color</item> 
     <item name="windowActionBar">false</item> 
    </style> 
</resources> 
+0

znak @victor freg odpowiedział jeśli moja odpowiedź pomogła Ci tak, że pomaga innym użytkownikom – Psypher

17

Po przeczytaniu @ odpowiedź Ranjith za Zrobiłem trochę kopania, a to wydawało się do pracy. Po prostu dodaj go do AppTheme.

//red is the color of the pressed state and activated state 
    <item name="colorControlActivated">@android:color/holo_red_light</item> 
    //black is the color of the normal state 
    <item name="colorControlNormal">@android:color/black</item> 

Moje pytanie brzmi: jak to zrobić programowo, ponieważ mam dynamiczne przyciski radiowe?

5
RadioButton raPrivate = (RadioButton) layout.findViewById(R.id.radioPrivate); 
int textColor = Color.parseColor(#000000); 
raPrivate.setButtonTintList(ColorStateList.valueOf(textColor)); 
+10

wygląda jak buttonTint jest używany tylko w API 21 i więcej. Jakiś pomysł na to, co wcześniej użyć? – AdamMc331

+1

@ McAdam331 zobacz [moja odpowiedź poniżej] (http://stackoverflow.com/a/40892467/1276636). – Sufian

+0

po różnych nieudanych odpowiedziach, ta odpowiedź plus 'AppCompatRadioButton' jest odpowiedzią. Dzięki – voghDev

3

Nie wymaga dodatkowej stylizacji. Android obsługuje go przez xml. Po prostu dodaj android: buttonTint = "@ color/yourColor" w swoim przycisku opcji.

Na przykład.

<RadioButton 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:buttonTint="@color/red" 
android:text="Upload" 
android:textColor="@color/text_dark_gray" 
android:textSize="14sp" /> 
0
//red is the color of the pressed state and activated state 
<item name="colorControlActivated">@android:color/holo_red_light</item> 
//black is the color of the normal state 
<item name="colorControlNormal">@android:color/black</item> 

Od: user2968401

Gdy masz różne style dla przycisku opcji można zamienić je przypisując im nowy przycisk Radio ze stylem już ustawiony do nowego stylu:

(RadioButton)layout.findViewById(R.id.radioButton) = new RadioButton(this, null, R.style.RadioButton_style); 
1

mam zrobić w ten sposób:

Zrzut ekranu

enter image description here

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context=".MainActivity" 
    tools:showIn="@layout/app_bar_main"> 

    <RadioGroup 
     android:id="@+id/radioGroup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 


    </RadioGroup> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 

     /** 
     * First Radio Buttonn 
     */ 
     RadioButton radioButtonAndroid = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null); 
     radioButtonAndroid.setText("Hello Android"); 
     radioGroup.addView(radioButtonAndroid); 

     /** 
     * Second Radio Buttonn 
     */ 
     RadioButton radioButtonIos = (RadioButton) getLayoutInflater().inflate(R.layout.custom_radiobutton, null); 
     radioButtonIos.setText("Hello Ios"); 
     radioGroup.addView(radioButtonIos); 
    } 
} 

custom_radiobutton.xml

0.123.
<?xml version="1.0" encoding="utf-8"?> 
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:buttonTint="@color/colorPrimary" 
    android:text=""> 

</RadioButton> 

Mam nadzieję, że to ci pomoże.

3

Jeśli chcesz zmienić kolor, ale nie zmieni colorControlActivated i colorControlNormal dla całej aplikacji, można zastąpić swoją apptheme tylko dla przycisku radiowego tworząc nowy styl:

<android.support.v7.widget.AppCompatRadioButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignParentEnd="true" 
    android:theme="@style/RadioButtonTheme" 
    android:id="@+id/radioButton"/> 



<style name="RadioButtonTheme" parent="@style/AppTheme"> 
    <item name="colorControlActivated">@color/colorAccent</item> 
    <item name="colorControlNormal">@color/colorPrimaryDark</item> 
</style> 
9

można to zrobić dwojako (wspierać wstępnego Lollipop)

  1. użytkowania AppCompatRadioButton:

    AppCompatRadioButton radioButton; 
    // now use following methods to set tint colour 
    radioButton.setSupportButtonTintMode(); 
    radioButton.setSupportButtonTintList(); 
    
  2. Zastosuj to jako styl do RadioButton w XML:

    <style name="RadioButton.Login" parent="Widget.AppCompat.CompoundButton.RadioButton"> 
        <item name="android:textColor">@android:color/white</item> 
        <item name="buttonTint">@android:color/white</item> 
    </style> 
    
+1

Dobra odpowiedź, dziękuję za uwzględnienie obsługi zgodności wstecznej. – AdamMc331

Powiązane problemy