2015-01-20 12 views
6

In meinem Code füge ich programmatisch Eingangselemente wie RadioButtons, Checkboxen usw. meinem Layout hinzu. Das Problem ist, dass der Stil dieser Elemente nicht der Standard-Stil ist, den Sie bekommen würden, wenn Sie hinzufügen würden sagen wir ein RadioButton über XML. (Es sieht wirklich weiß und fast durchsichtig auf einem weißen Anwendungshintergrund. Ein bisschen wie es ist transparent) Auch die EditText-Elemente, die ich hinzufügen, haben den gleichen Stil und wenn Sie etwas in sie eingeben, ist der Text zu groß und überlappt die Textzeile ein wenig. Also ich denke, es kommt darauf an, diesen Elementen irgendwie ihren Standardstil zu geben, so wie sie aussehen, wenn sie über xml definiert werden.Festlegen von Stilen für programmgesteuert hinzugefügte Ansichten

Eine Probe von meinem Code sieht wie folgt aus:

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); 
    } 

Mein Ziel API lvl 21 (Lollipop)

Antwort

12

Sie einen Stil innerhalb styles.xml als Argument eines View Konstruktor definiert passieren kann. So Ihr Beispiel bedenkt, möchten Sie anrufen:

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

dann benutzerdefinierte Attribut innerhalb attrs.xml

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

und innerhalb Ihrer Anwendung Thema in styles.xml zugeben

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

YourRadioButtonStyle ist benutzerdefinierte Radio Schaltflächenstil definiert in styles.xml

+0

Ist es auch irgendwie möglich, den Standard-RadioButton-Stil zu übergeben, oder muss ich einen neuen Stil erstellen, der den Standardstil als Eltern hat? – Cuddl3s

+0

müssen Sie 'YourRadioButtonStyle' definieren, das' @android: style/Widget.CompoundButton.RadioButton' als übergeordnetes Element hat und einige Felder so einstellt, wie Sie möchten –

+0

den Standard-RadioButton-Stil zu übergeben, den Sie in der Lage sein sollten, 'com zu verwenden. android.internal.R.attradioButtonStyle' statt 'R.attr.radioButtonStyle' –

Verwandte Themen