自定义复选框图像 - 但仍可以看到原始图像?

时间:2014-04-21 19:35:32

标签: android checkbox

我使用的是标准的Android复选框,但当我在其他人的手机上安装我的应用程序进行测试时,每部手机的复选框都不同。

在其中一部手机上,复选框很轻,检查时几乎看不到该框。

所以我尝试制作一个自定义复选框选中的图像。

这项工作正常,但我仍然可以在背景中看到原始的deafult复选框图像?

任何想法为什么?

这是我的可检查线性布局,说实话我甚至不确定我是否需要它?

<?xml version="1.0" encoding="utf-8"?>

<com.myapp.myappname.CheckableLinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox"
        android:background="@drawable/customcheckbox"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

</com.myapp.myappname.CheckableLinearLayout>

然后我有一个自定义列表行,这是我的自定义ListView:

<?xml version="1.0" encoding="utf-8"?>
<com.myapp.myappname.CheckableLinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:orientation="horizontal"
    android:padding="5dip" >

    <!--  Thumbnail image -->
    <LinearLayout android:id="@+id/thumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dip"
        android:layout_alignParentLeft="true"

        android:layout_marginRight="5dip">

        <ImageView
            android:id="@+id/list_image"
            android:layout_width="60dip"
            android:layout_height="60dip"
            android:focusable="false"
            />

    </LinearLayout>

 <!-- File Name -->
    <TextView
        android:id="@+id/filename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:textColor="#343434"
        android:textSize="12dip"
        android:layout_marginTop="10dip"
        android:layout_toRightOf="@+id/thumbnail"
        android:focusable="false"
        android:text="Some Text." />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:layout_alignParentRight="true"
        android:background="@drawable/customcheckbox"
        android:enabled="false" />

</RelativeLayout>
 </com.myapp.myappname.CheckableLinearLayout>

任何想法如何压制原作?

自定义复选框:

<selector  xmlns:android="http://schemas.android.com/apk/res/android">
    <!--<item android:state_checked="false" android:drawable="@drawable/unchecked" />-->
    <item android:state_checked="true" android:drawable="@drawable/checked" />
    <!--<item android:drawable="@drawable/unchecked" /> &lt;!&ndash; default &ndash;&gt;-->
</selector>

1 个答案:

答案 0 :(得分:2)

您要更改的属性为button,而不是background

首先,为不同的按钮状态设计自定义图形。使用状态列表drawable(docs)来关联各种图像。例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_checked="true" android:drawable="@drawable/checked" />
   <item android:state_checked="false" android:drawable="@drawable/unchecked" />
</selector>

将其保存到drawable resources文件夹中,例如my_checkbox.xml。

现在,使用复选框布局定义上的按钮属性:

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:layout_alignParentRight="true"
    android:button="@drawable/my_checkbox"
    android:enabled="false" />