5

嗨,我正在尝试创建一个复选框列表,该列表应如下图所示,在复选标记图像之前和之后都有空间。

在此处输入图像描述

但是当我尝试创建复选框时,它的显示如下图所示。

在此处输入图像描述

没有空格来检查标记图像,就像我显示第一张图像一样。如果我使用填充来复选框组件,例如“android:padding = 50dp”,它会在复选标记图像和文本之间留出空间。但在 Check-Mark 图像之前没有在起始 .ie 中留出空间。下面是我的复选框的 xml 布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="15dp">
<CheckBox android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:button="@drawable/btn_check_square"
       android:background="@drawable/filter_item_background"
       android:textColor="@android:color/black"
       android:padding="5dp"
       android:text="check box text"/>
</LinearLayout>

任何解决此问题的帮助表示赞赏。

4

5 回答 5

30

这可以通过以下代码解决。

<CheckBox
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/filter_item_background"
android:button="@android:color/transparent"                             //Make button null
android:drawableLeft="@drawable/btn_check_square"  //Create button in drawable
android:drawablePadding="20dp"                     //Set space between Text & CB     
android:padding="5dp"
android:text="check box text"
android:textColor="@android:color/black" />
于 2013-01-31T06:54:29.047 回答
15

试试这个(没有自定义图形):

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@android:color/transparent"
    android:drawablePadding="8dp"
    android:text="CheckBox" />

它使用了一个小技巧:由于 Checkbox 是从 Button 派生的,我们可以添加一个可绘制对象,现在可以在标签和可绘制对象之间设置一个填充。由于我们实际上不需要真正的图标,因此我们使用透明颜色代替。

于 2013-01-30T07:20:40.610 回答
2
<CheckBox
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/filter_item_background"
    android:button="@null"                             //Make button null
    android:drawableLeft="@drawable/btn_check_square"  //Create button in drawable
    android:drawablePadding="20dp"                     //Set space between Text & CB     
    android:padding="5dp"
    android:text="check box text"
    android:textColor="@android:color/black" />
于 2013-01-30T07:25:02.423 回答
1

使用下面的代码

final float scale = this.getResources().getDisplayMetrics().density;
checkbox.setPadding(checkbox.getPaddingLeft()
        + (int) (10.0f * scale + 0.5f),
        checkbox.getPaddingTop(),
        checkbox.getPaddingRight(),
        checkbox.getPaddingBottom());
于 2013-01-30T06:37:55.930 回答
0

将此添加到您的复选框:

android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
于 2013-01-30T06:42:30.390 回答