Ich bin auch auf das Problem gestoßen und habe den Weg gefunden, den Stil programmatisch festzulegen. Vielleicht braucht ihr es alle, also aktualisiere ich dort.
Der dritte Parameter des View-Konstruktors akzeptiert einen Typ von attr in Ihrem Design als folgenden Quellcode:
public TextView(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.textViewStyle);
}
Sie müssen also eine Art von R.attr. ** anstelle von R.style. ** übergeben
In meinen Codes habe ich folgende Schritte ausgeführt:
Passen Sie zunächst ein benutzerdefiniertes attr an, das von Themen in attr.xml verwendet werden soll.
<attr name="radio_button_style" format="reference" />
Zweitens geben Sie Ihren Stil in Ihrem verwendeten Thema in style.xml an.
<style name="AppTheme" parent="android:Theme.Translucent">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="radio_button_style">@style/radioButtonStyle</item>
</style>
<style name="radioButtonStyle" parent="@android:style/Widget.CompoundButton.RadioButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">64dp</item>
<item name="android:background">#000</item>
<item name="android:button">@null</item>
<item name="android:gravity">center</item>
<item name="android:saveEnabled">false</item>
<item name="android:textColor">@drawable/option_text_color</item>
<item name="android:textSize">9sp</item>
</style>
Am Ende benutze es!
RadioButton radioButton = new RadioButton(mContext, null, R.attr.radio_button_style);
Die programmgesteuert erstellte Ansicht verwendet den angegebenen Stil in Ihrem Thema.
Sie können es versuchen und hoffen, dass es perfekt für Sie funktioniert.