0

在我的简单应用程序中,我使用无线电组内的 2 个单选按钮。在谷歌设备(Nexus、Samsung nexus)上,一切都正确显示,但在其他一些设备上,如 Sony Experia、Samsung S III,圆形按钮下的单选按钮填充标签。我使用图像作为单选按钮并使用 paddingLeft 来获取标签和单选按钮之间的间隙。这是我的代码:

<RadioGroup 
    android:id="@+id/radioGrpBitRate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/btnPlay"
    style="@style/RadioGroup" >

    <RadioButton
        android:id="@+id/radio128"
        style="@style/RadioButton128"
        android:layout_height="wrap_content"
        android:gravity="center|right" />

    <RadioButton
        android:id="@+id/radio32"
        style="@style/RadioButton32"
        android:gravity="center|right" />

</RadioGroup>

和风格

<style name="RadioGroup">
    <item name="android:layout_marginTop">25dp</item>
    <item name="android:layout_marginLeft">15dp</item>
</style>

<style name="RadioButton128" parent="@android:style/Widget.CompoundButton.RadioButton">
    <item name="android:button">@drawable/radio</item>
    <item name="android:text">@string/radio128String</item>
    <item name="android:checked">true</item>
    <item name="android:onClick">actionPlay128</item>
    <item name="android:layout_marginBottom">5dp</item>
    <item name="android:paddingBottom">6dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:paddingLeft">5dp</item>
    <item name="android:textSize">20sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">#ededed</item>
</style>
<style name="RadioButton32" parent="@android:style/Widget.CompoundButton.RadioButton">
    <item name="android:button">@drawable/radio</item>
    <item name="android:text">@string/radio32String</item>
    <item name="android:checked">false</item>
    <item name="android:onClick">actionPlay32</item>
    <item name="android:paddingLeft">5dp</item>
    <item name="android:textSize">20sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">#ededed</item>
</style>
4

1 回答 1

1

我认为这可能与我在复选框中遇到的类似问题有关。

在 android 版本 17 之前,paddingLeft 包括复选框本身的大小,而在 android 版本 17 之后,它是复选框和文本之间的填充。

因此,我在普通 values/dimens.xml 中为复选框大小 + 我想要的填充定义了一个维度,并创建了一个只包含填充的 values-v17/dimens.xml。

例如值/dimens.xml

    <dimen name="checkbox_size">42dp</dimen> <!-- 5dp plus 37dp of standard checkbox -->

值-v17/dimens.xml

    <dimen name="checkbox_size">5dp</dimen>

然后将样式中的 paddingLeft 更新为 checkbox_size。

我不知道单选按钮的标准尺寸是多少,或者即使这是同一个问题,但它可能只是工作。

于 2013-08-30T14:01:16.373 回答