También conocí el problema y encontré la manera de establecer un estilo programáticamente. Quizás todos lo necesiten, así que actualizo allí.
El tercer parámetro de View constructor acepta un tipo de atributo en su tema como el código fuente a continuación:
public TextView(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.textViewStyle);
}
Por lo tanto, debe pasar un tipo de R.attr. ** en lugar de R.style. **
En mis códigos, hice los siguientes pasos:
Primero, personalice un atributo personalizado para que lo utilicen los temas en attr.xml.
<attr name="radio_button_style" format="reference" />
Segundo, especifique su estilo en su tema usado en style.xml.
<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>
¡Al final, úsalo!
RadioButton radioButton = new RadioButton(mContext, null, R.attr.radio_button_style);
la vista creada programáticamente usará el estilo especificado en su tema.
Puedes intentarlo y esperar que te funcione perfectamente.