我有一个图像按钮:
<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>
出于某种原因,当我运行应用程序并单击按钮时,它不会发生变化。有没有什么我必须在点击监听器上实现?
答案 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个小时就可以了。