【问题标题】:Applying a Theme to Dynamic Radio Buttons in Android将主题应用于 Android 中的动态单选按钮
【发布时间】:2018-05-30 22:30:14
【问题描述】:

我的应用程序中有一个主题,它定义了默认的文本外观和按钮样式。

<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 并且文本样式正确,但选中的标记消失了。为什么?

我在按钮组中有单选按钮,我在其中动态添加按钮。当我通过布局添加按钮时,标记会正确显示。但动态添加的按钮不会。

【问题讨论】:

    标签: android styles radio-button


    【解决方案1】:

    解决方案是使用 单选按钮(这个) 构造函数。

    使用 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 使我所有的单选按钮都显示标记并对文本设置样式(没有在构造函数中设置它)。

    【讨论】:

      【解决方案2】:

      就我而言,仅使用inflater就已成功解决:

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

      Take a look at the full answer!

      希望对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-08-24
        • 1970-01-01
        • 2012-03-11
        • 2018-09-07
        • 2020-07-20
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多