Tôi cũng gặp vấn đề và tôi đã tìm ra cách thiết lập phong cách theo chương trình. Có lẽ tất cả các bạn cần nó, vì vậy tôi cập nhật ở đó.
Tham số thứ ba của hàm tạo View chấp nhận một loại attr trong chủ đề của bạn dưới dạng mã nguồn bên dưới:
public TextView(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.textViewStyle);
}
Vì vậy, bạn phải vượt qua một loại R.attr. ** chứ không phải R.style. **
Trong mã của tôi, tôi đã làm theo các bước sau:
Đầu tiên, tùy chỉnh một attr tùy chỉnh sẽ được sử dụng bởi các chủ đề trong attr.xml.
<attr name="radio_button_style" format="reference" />
Thứ hai, cụ thể phong cách của bạn trong chủ đề được sử dụng của bạn trong 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>
Cuối cùng, sử dụng nó!
RadioButton radioButton = new RadioButton(mContext, null, R.attr.radio_button_style);
Chế độ xem được tạo theo chương trình sẽ sử dụng kiểu được chỉ định trong chủ đề của bạn.
Bạn có thể dùng thử, và hy vọng nó có thể làm việc cho bạn một cách hoàn hảo.