Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageButton不更改图像_Java_Android - Fatal编程技术网

Java ImageButton不更改图像

Java ImageButton不更改图像,java,android,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="@

我有一个图像按钮:

<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>


出于某种原因,当我运行应用程序并单击按钮时,它不会改变。我必须在点击式侦听器中实现什么吗?

尝试将您的
可绘制的
用作
背景
而不是
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"/>

伙计们,我把它弄明白了,所以我换成了一个切换按钮,这里最大的问题是背景拉伸了它,以至于它对于TableRow来说太大了。为它设置一个框架布局,这就解决了所有问题

这是我的带有切换按钮的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个小时在这上面

还是没什么,它似乎也拉长了。没想到创建图标并使其切换会如此困难。请参阅我的更新答案!我想这会解决你的问题!看起来你是在正确的轨道上,它先转到异性,然后返回,因为
ImageButton
无法管理
选中的状态。你需要一个复选框
<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>