2014-11-03 8 views
5

Usando v21 AppCompat possiamo impostare temi di colore personalizzato come segue:creato dinamicamente pulsante di scelta o CheckBox non usa Risalto colore

<style name="Theme.MyTheme" parent="Theme.AppCompat"> 
    <!-- customize the color palette --> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 

Ma ho un mucchio di caselle create in modo dinamico e pulsanti di opzione che non sono gonfiati da xml. Questi oggetti creati dinamicamente non ereditano l'accento di colore che ho specificato. Cosa posso fare per impostare correttamente questi accenti di colore?

+0

Neoh avete finalmente risolto il problema? –

+0

No, devo usare xml per gonfiare le loro viste anche se sono create dinamicamente, come suggerivano loro. – Neoh

+0

Anche con i nuovi widget AppCompat? Vedi la mia risposta. –

risposta

11

Non si può fare nulla al riguardo se non creare un file di layout con un solo CheckBox al suo interno e poi gonfiarlo.

Come dichiarato dal sito degli sviluppatori: La progettazione del tema del materiale può essere applicata solo quando si caricano le viste utilizzando un inflattore di layout.

Questo perché il nuovo backport di design del materiale si aggancia al processo di gonfiaggio del layout.

Fonte: http://android-developers.blogspot.nl/2014/10/appcompat-v21-material-design-for-pre.html

Edit:
Nelle versioni più recenti di 22.1+ AppCompat v7 widget come CheckBox e RadioButton possono essere creati in modo dinamico (non più nascosti/API interna).

Attualmente sono supportati questi widget:

  • AppCompatAutoCompleteTextView
  • AppCompatButton
  • AppCompatCheckBox
  • AppCompatCheckedTextView
  • AppCompatEditText
  • AppCompatMultiAutoCompleteTextView
  • AppCom patRadioButton
  • AppCompatRatingBar
  • AppCompatSpinner
  • AppCompatTextView
  • AppCompatSeekBar (dal 23,1)
  • AppCompatImageButton (dal 23,1)
  • AppCompatImageView (dal 23,1)
5

Ho incontrato lo stesso problema e ora ho un file material_factory_ * xml per ciascuna delle mie viste create dinamicamente. Il suo un po 'fastidioso ma funziona:

// checkbox = new CeckBox(context); 
checkbox = (CheckBox) View.inflate(context, R.layout.material_factory_checkbox, null); 

e il file material_factory_checkbox.xml:

<?xml version="1.0" encoding="utf-8"?> 
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
0

stava avendo lo stesso problema. È necessario impostare il tema del pulsante di opzione, non lo stile.

android:theme="@style/RadioButtonStyle" 

Esempio

<RadioButton 
android:theme="@style/RadioButtonStyle" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginBottom="10dp" /> 

Ps questo sta lavorando su pulsanti di scelta creati dinamicamente

-1

Prova utilizzando AppCompatCheckBox dalla libreria di supporto:

import android.support.v7.widget.AppCompatCheckBox; 

AppCompatCheckBox cb = new AppCompatCheckBox(context); 
1

si può effettivamente fare qualcosa, applicare una stile sulla visualizzazione di gonfiaggio come:

<CheckBox 
     android:id="@+id/check_text" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="@string/save_password_label" 
     android:theme="@style/CheckBoxStyle" 
     /> 

con lo stile:

<style name="CheckBoxStyle" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorAccent">@color/colorPrimary</item> 
</style>