6

アプリケーションに、デフォルトのテキストの外観とボタンのスタイルを定義するテーマがあります。

<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 radioButton = new RadioButton(this, null, R.style.AppTheme);

RadioButtonが作成され、テキストのスタイルが適切に設定されますが、チェックされたマーカーが消えます。なんで?

ボタングループにラジオボタンがあり、ボタンを動的に追加します。レイアウトを介してボタンを追加すると、マーカーが正しく表示されます。しかし、動的に追加されたボタンはそうではありません。

4

2 に答える 2

10

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

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

私のstyles.xmlの他のスタイリングがボタンに自動的に適用されるため、実際には必要ありませんが、興味がある場合は次のようにします。

追加する

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

私の「AppTheme」へ-スタイルと

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

style.xmlに追加すると、すべてのラジオボタンにマーカーが表示され、テキストのスタイルが設定されます(コンストラクターで設定せずに)。

于 2012-09-14T08:46:18.750 に答える
1

私の場合、インフレータを使用するだけで問題なく解決できました。

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ...
    RadioButton rb = (RadioButton) inflater.inflate(R.layout.radio_butt, null);

完全な答えを見てください!

うまくいけば、それは誰かを助けるでしょう。

于 2018-05-30T14:30:14.457 に答える