2015-01-20 20 views
6

Nel mio codice, aggiungo elementi di input come radioButton, caselle di controllo ecc. Al mio layout a livello di programmazione. Il problema è che lo stile di quegli elementi non è lo stile predefinito che si otterrebbe, quando si aggiungerebbe diciamo un radioButton tramite xml. (Sembra davvero bianco e quasi trasparente su uno sfondo bianco dell'applicazione. Un po 'come è trasparente) Inoltre, gli elementi EditText che sto aggiungendo hanno lo stesso stile e se si digita qualcosa in essi, il testo è troppo grande e si sovrappone leggermente alla riga di testo. Quindi immagino che tutto si riduca a dare in qualche modo a quegli elementi il ​​loro stile di default, come sembrano quando sono definiti tramite xml.Impostazione degli stili delle viste aggiunte a livello di programmazione

un campione del mio codice si presenta così:

RadioGroup radioGroup = new RadioGroup(mContext); 
    radioGroup.setLayoutParams(fullWidthWrapHeight); 

    for (int i = 0; i < arg0.getOptions().size(); i++){ 
     RadioButton radioButton = new RadioButton(mContext, null); 
     radioButton.setPadding(padding16dp , padding8dp, padding16dp, padding8dp); 
     radioButton.setText(arg0.getOptions().get(i).getText()); 
     radioButton.setLayoutParams(wrapBoth); 
     radioButton.setGravity(Gravity.CENTER_HORIZONTAL); 

     radioButton.setTextAppearance(mContext, R.style.Default_Text); 
     radioGroup.addView(radioButton); 
    } 

Il mio obiettivo API lvl è 21 (Lollipop)

risposta

12

È possibile passare uno stile definito all'interno styles.xml come argomento di un costruttore View. Quindi, considerando il tuo esempio, si dovrebbe chiamare:

RadioButton radioButton = new RadioButton(mContext, null, R.attr.radioButtonStyle); 

quindi aggiungere attributo personalizzato all'interno attrs.xml

<attr name="radioButtonStyle" format="reference" /> 

e dentro il tema dell'applicazione in styles.xml aggiungere

<item name="radioButtonStyle">@style/YourRadioButtonStyle</item> 

YourRadioButtonStyle è la radio personalizzata stile del pulsante definito in styles.xml

+0

È anche possibile in qualche modo passare lo stile radioButton predefinito o devo creare un nuovo stile che abbia lo stile predefinito come genitore? – Cuddl3s

+0

devi definire 'YourRadioButtonStyle' che ha' @android: style/Widget.CompoundButton.RadioButton' come genitore e imposta alcuni campi nel modo in cui vuoi che –

+0

passi allo stile radioButton predefinito che dovresti essere in grado di usare 'com. android.internal.R.attr.radioButtonStyle' invece di 'R.attr.radioButtonStyle' –

Problemi correlati