4

我使用 XML 布局创建器在 Android 中创建了一个自定义图标栏,使用 LinearLayout 中的 RadioGroup(XML 包含在下面)。RadioGroup 中的每个 RadioButton 都有一个自定义可绘制对象(具有选中和未选中状态)作为其android:button属性。

线性布局本身在 aRelativeLayout中,因此它可以出现在屏幕上的任意位置(在本例中作为侧边栏)。

可绘制对象是 55 像素宽,android:layout\_width所有这些视图的属性都是wrap\_content.

当我使这个组件可见时,对齐到屏幕的左下角,只有大约四分之三的 RadioButton 图像宽度是可见的。将 的 设置layout\_widthRelativeLayout纠正fill\_parent 此问题并导致出现完整按钮。

然而,这意味着按钮组在整个屏幕宽度上消耗点击事件。

如何使整个按钮出现,并且只有按钮区域响应点击?硬编码drawable的宽度并不是一个特别理想的解决方案。

<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/LinearLayout01" android:visibility="invisible">
        <RadioGroup android:id="@+id/RadioGroup01" android:layout_height="wrap_content" android:checkedButton="@+id/RB01" android:layout_width="fill_parent">
            <RadioButton android:id="@+id/RB01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR01"/>
            <RadioButton android:id="@+id/RB02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR02"/>
            <RadioButton android:id="@+id/RB03" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR03"/>
            <RadioButton android:id="@+id/RB04" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR04"/>
        </RadioGroup>
    </LinearLayout>
    </RelativeLayout>
4

2 回答 2

7

在 dp(密度独立像素)中设置 LinearLayout、RadioGroup 或 RadioButton 的宽度可能对您有用。根据你上面所说的,我认为它必须是布局的宽度。尺寸是“硬编码”的,但它们会随着屏幕的大小而缩放。

所以xml看起来像:

android:layout_width="55dp"

dps 的官方文档在这里

于 2009-02-19T00:47:22.897 回答
2

我无法想象为什么另一个答案有 6 个赞成票,这是完全错误的

尺寸是“硬编码”的,但它们会随着屏幕的大小而缩放。

,它们会根据屏幕的密度进行缩放。我非常希望我们可以使用 XML 中的百分比,而不必编写它们。

于 2012-04-28T03:54:55.223 回答