setTextAppearance()在Android上不起作用

时间:2013-02-26 12:56:51

标签: java android

我已尝试在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) {}
}

style.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>

1 个答案:

答案 0 :(得分:0)

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

在您的示例中,您似乎位于UI线程上,因此请尝试在该textview上调用Invalidate。

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