ImageButton不改变图像

时间:2014-11-24 16:22:14

标签: java android

我有一个图像按钮:

<ImageButton
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/imageButton"
    android:layout_weight="0.5"
    android:layout_column="2"
    android:background="@null"
    android:src="@drawable/gender_choice"/>

gender_choice.xml如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/male_gender"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/female_gender"
        android:state_checked="false"/>
</selector>

出于某种原因,当我运行应用程序并单击按钮时,它不会发生变化。有没有什么我必须在点击监听器上实现?

2 个答案:

答案 0 :(得分:0)

尝试使用drawable作为background而不是src,看看它是否有效。

<Button
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/imageButton"
    android:layout_weight="0.5"
    android:layout_column="2"
    android:background="@drawable/gender_choice"/>

还尝试更改您的drawable并使用state_selected的{​​{1}}和state_pressed insteead:

state_checked

答案 1 :(得分:0)

把它想出来,所以我切换到了一个ToggleButton,这里的一个大问题是背景拉伸它,所以它对于TableRow来说太大了。虽然放入了FrameLayout,但它解决了所有问题。

所以这是带有ToggleButton的FrameLayout,它调用在res / drawable文件夹中创建的gender_choice.xml。

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:layout_column="2">

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/gender_choice"
        android:textOn=""
        android:textOff=""
        android:id="@+id/toggleButton"
        android:layout_gravity="center"/>
</FrameLayout>

在gender_choice.xml内部是一个简单的选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/male_gender"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/female_gender"
        android:state_checked="false"/>
</selector>

基本上它也是如此,我无法相信我花了4个小时就可以了。

相关问题