ฉันพบปัญหาด้วยเช่นกันและฉันก็พบวิธีการกำหนดรูปแบบโดยทางโปรแกรม บางทีคุณอาจต้องการมันทั้งหมดดังนั้นฉันจึงอัพเดทที่นั่น
พารามิเตอร์ที่สามของวิวคอนสตรัคเตอร์ยอมรับประเภทของ attr ในธีมของคุณเป็นซอร์สโค้ดด้านล่าง:
public TextView(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.textViewStyle);
}
ดังนั้นคุณต้องผ่านประเภทของ R.attr ** แทน R.style **
ในรหัสของฉันฉันทำตามขั้นตอน:
ก่อนอื่นให้ปรับแต่ง attr ที่กำหนดเองเพื่อใช้โดยธีมใน attr.xml
<attr name="radio_button_style" format="reference" />
ขั้นที่สองระบุสไตล์ของคุณในธีมที่ใช้ใน 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>
ในตอนท้ายใช้มัน!
RadioButton radioButton = new RadioButton(mContext, null, R.attr.radio_button_style);
มุมมองที่สร้างโดยทางโปรแกรมจะใช้สไตล์ที่ระบุในธีมของคุณ
คุณสามารถลองและหวังว่ามันจะทำงานได้อย่างสมบูรณ์แบบสำหรับคุณ