2012-09-13 8 views
6

Ho un tema nella mia applicazione che definisce la textappata predefinita e lo stile dei pulsanti.Applicazione di un tema a pulsanti di scelta dinamici in Android

<style name="AppTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen"> 
    <item name="android:textAppearance">@style/TextAppearance.Medium</item> 
    <item name="android:textAppearanceLarge">@style/TextAppearance.Large</item> 
    <item name="android:textAppearanceMedium">@style/TextAppearance.Small</item> 
    <item name="android:textAppearanceSmall">@style/TextAppearance.Medium</item> 
    <item name="android:textColorPrimary">#000000</item> 
    <item name="android:textColorSecondary">#000000</item> 
    <item name="android:textColorTertiary">#000000</item> 
    <item name="android:buttonStyle">@style/Button</item> 
</style> 

<style name="TextAppearance" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
</style> 

<style name="TextAppearance.Large"> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textSize">32dp</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="TextAppearance.Medium"> 
    <item name="android:textColor">?android:attr/textColorSecondary</item> 
    <item name="android:textSize">22dp</item> 
</style> 

<style name="TextAppearance.Small"> 
    <item name="android:textColor">?android:attr/textColorTertiary</item> 
    <item name="android:textSize">18dp</item> 
</style> 

<style name="Button" parent="@android:style/Widget.Button"> 
    <item name="android:textColor">?android:attr/textColorSecondary</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
</style> 

Quando creo un RadioButton usando

RadioButton radioButton = new RadioButton(this, null, R.style.AppTheme); 

Il RadioButton viene creato e il testo è in stile correttamente, ma il marcatore controllato scompare. Perché?

Ho il pulsante Radio in un Buttongroup, in cui aggiungo dinamicamente i pulsanti. Quando aggiungo un pulsante tramite il layout, l'indicatore viene visualizzato correttamente. Ma i pulsanti aggiunti dinamicamente no.

risposta

8

La soluzione era utilizzare il costruttore RadioButton (questo) .

Tutti gli stili impostati con il defStyle-Constructor sono stati ignorati e il marcatore è stato rimosso. Non sono sicuro se questo è un bug o non è documentato.

Io in realtà non ne ho bisogno perché gli altri stylings dal mio styles.xml applicano al pulsante automaticamente ora, ma se qualcuno è interessato:

aggiungendo

<item name="android:radioButtonStyle">@style/MyRadioButton</item> 

al mio "AppTheme" -Style e

<style name="MyRadioButton" parent="@android:style/Widget.CompoundButton.RadioButton"> 
    <item name="android:textSize">5dp</item> 
</style> 

al style.xml rende tutti i miei radiobutton visualizzare il marcatore e lo stile del testo (senza s etting nel costruttore).

+0

Funziona alla grande, grazie! –

Problemi correlati