2

我已经尝试在 中以编程方式设置文本样式RadioButton,但它们只设置大小和颜色。但是,如果我通过 XML 设置样式,它就可以正常工作。TextView我在相同的情况下尝试了设置样式。我究竟做错了什么?

Java代码:

public class YourProgOneApps extends Activity implements OnClickListener {

RadioGroup radioGender, radioTarget, radioWhere;
RadioButton man, woman, build_muscle, fat_loss, keep_in_good_shape, gym, home;
TextView textView2;
Button btnExeProgOne;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_prog1);

    radioGender = (RadioGroup) findViewById(R.id.radioGender);
    man = (RadioButton) findViewById(R.id.man);
    woman = (RadioButton) findViewById(R.id.woman);
    textView2 = (TextView) findViewById(R.id.textView2);
    textView2.setTextAppearance(getApplicationContext(), R.style.radio_chek_f_pre_f); 
    man.setTextAppearance(this, R.style.radio_chek_f_pre_f);
    radioTarget = (RadioGroup) findViewById(R.id.radioTarget);
    radioWhere = (RadioGroup) findViewById(R.id.radioWhere);
  }
public void onClick(View v) {}
}

样式.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="android:Theme.Light" />
<style name="radio_chek_f_pre_f">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:background">@drawable/radio_right</item>
    <item name="android:button">@null</item>   
    <item name="android:textColor">#b4b4b4</item>
    <item name="android:textSize">20sp</item>
    <item name="android:shadowColor">#ffffff</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
    <item name="android:gravity">center_horizontal</item>
</style>
</resources>
4

1 回答 1

0

如果您在 UI 线程上,请尝试调用 invalidate();如果您不在 UI 线程上,请尝试调用 postInvalidate()。

在您的示例中,您似乎在 UI 线程上,因此请尝试在该文本视图上调用 Invalidate。

这应该迫使它重新绘制,虽然我想 setTextAppearance 会自动执行此操作,但值得一试。

于 2013-02-26T13:28:17.590 回答