2012-09-13 10 views
6

私のアプリケーションには、デフォルトのテクスチャとボタンスタイルを定義するテーマがあります。Androidのダイナミックラジオボタンにテーマを適用する

<style name="AppTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen"> 
    <item name="android:textAppearance">@style/TextAppearance.Medium</item> 
    <item name="android:textAppearanceLarge">@style/TextAppearance.Large</item> 
    <item name="android:textAppearanceMedium">@style/TextAppearance.Small</item> 
    <item name="android:textAppearanceSmall">@style/TextAppearance.Medium</item> 
    <item name="android:textColorPrimary">#000000</item> 
    <item name="android:textColorSecondary">#000000</item> 
    <item name="android:textColorTertiary">#000000</item> 
    <item name="android:buttonStyle">@style/Button</item> 
</style> 

<style name="TextAppearance" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
</style> 

<style name="TextAppearance.Large"> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textSize">32dp</item> 
    <item name="android:textStyle">bold</item> 
</style> 

<style name="TextAppearance.Medium"> 
    <item name="android:textColor">?android:attr/textColorSecondary</item> 
    <item name="android:textSize">22dp</item> 
</style> 

<style name="TextAppearance.Small"> 
    <item name="android:textColor">?android:attr/textColorTertiary</item> 
    <item name="android:textSize">18dp</item> 
</style> 

<style name="Button" parent="@android:style/Widget.Button"> 
    <item name="android:textColor">?android:attr/textColorSecondary</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
</style> 

私はラジオボタンを作成する場合

RadioButton radioButton = new RadioButton(this, null, R.style.AppTheme); 

を使用してラジオボタンが作成され、テキストが適切にスタイル設定されますが確認されたマーカーが消えます。どうして?

私はボタンを動的に追加するButtongroupにRadiobuttonを持っています。レイアウトを介してボタンを追加すると、マーカーが正しく表示されます。しかし、動的に追加されるボタンはそうではありません。

答えて

8

解決策は、 RadioButton(this) コンストラクタを使用することでした。

defStyle-Constructorで設定されたすべてのスタイリングが無視され、マーカーが削除されました。これがバグか文書化されていないかどうかはわかりません。

私のstyles.xmlから他のスタイリングは今自動的にボタンに適用されますので、私は実際にそれを必要としませんが、誰もが興味を持っている場合:

私の「AppTheme」に

<item name="android:radioButtonStyle">@style/MyRadioButton</item> 

を追加style.xmlのスタイルと

<style name="MyRadioButton" parent="@android:style/Widget.CompoundButton.RadioButton"> 
    <item name="android:textSize">5dp</item> 
</style> 

はすべての私のラジオボタンは、テキスト(なしのマーカーとスタイルを表示させますそれをコンストラクタに入れてください)。

+0

素晴らしい、ありがとう! –

関連する問題