Android:如何在组中创建类似按钮的单选按钮?
不使用图像就可以创建类似按钮的单选按钮吗?Android:如何在组中创建类似按钮的单选按钮?,android,Android,不使用图像就可以创建类似按钮的单选按钮吗? 希望在选择时处于按下状态。然后在单击其他选项时返回到正常状态。只需在不同状态(即聚焦、按下、选中或正常)下包含单选按钮的相应可绘图项即可。将它们包含在selector.xml中,以指定按钮在各个状态下的外观,并将该xml包含在按钮的android:background属性中。这就够了……!:) 查看此链接以更好地了解该方法: (它是为复选框提供的,但类似的内容也可以作为单选按钮用于按钮) 编辑: 定义round_button.xml如下: <?x
希望在选择时处于按下状态。然后在单击其他选项时返回到正常状态。只需在不同状态(即聚焦、按下、选中或正常)下包含单选按钮的相应可绘图项即可。将它们包含在
selector.xml
中,以指定按钮在各个状态下的外观,并将该xml包含在按钮的android:background
属性中。这就够了……!:)
查看此链接以更好地了解该方法:
(它是为复选框提供的,但类似的内容也可以作为单选按钮用于按钮)
编辑:
定义round_button.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_focused="true"
android:drawable="@drawable/roundbutton_on_background_focus_yellow" />
<item android:state_checked="false" android:state_focused="true"
android:drawable="@drawable/roundbutton_off_background_focus_yellow" />
<item android:state_checked="false"
android:drawable="@drawable/roundbutton_off_background" />
<item android:state_checked="true"
android:drawable="@drawable/roundbutton_on_background" />
</selector>
然后,在需要包含该按钮的地方,只需添加以下内容:
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_button"
android:checked="true"/>
[p.S.:别忘了包含圆形按钮的可绘图项,您必须自己搜索它们,或者从链接中提供的默认文件(.android)获取它们]是的,您可以通过使用可绘图按钮的状态来实现,例如 (我有可供绘制的州,你也可以有颜色。) 这是文件按钮_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/dark_silver_filled_square" />
<item android:drawable="@drawable/light_silver_filled_square"/>
</selector>
然后设置OnTouchListener以在按钮中保持所选颜色,如下所示:
<Button
android:id="@+id/allBtn"
android:layout_width="@dimen/_80sdp"
android:layout_height="@dimen/_22sdp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/button_selector"
android:text="All"
android:textAllCaps="false"
app:layout_constraintBottom_toTopOf="@+id/btnTest"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
btnList.add(allBtn)
binding.allBtn.setOnTouchListener { v, event ->
buttonStatePreserver(allBtn)
true
}
并将其传递给一个方法,以保留对该特定按钮的选择,并使其他剩余按钮处于未选择状态:
fun buttonStatePreserver(button: Button) {
button.setOnTouchListener { v, event ->
for(btn in btnList) {
if(btn == button) {
btn.isPressed = true
} else {
btn.isPressed = false
}
}
true
}
}
为该按钮定义selector.xml文件。检查这是最好的答案:我有这个想法,但不知道如何开始。你能分享代码片段吗?哦,我明白了,它将使用图像。有没有不使用图像的方法?我没有这个想法。直到现在我还找不到任何不使用图像的地方。所以,我会接受你的回答作为替代。谢谢
fun buttonStatePreserver(button: Button) {
button.setOnTouchListener { v, event ->
for(btn in btnList) {
if(btn == button) {
btn.isPressed = true
} else {
btn.isPressed = false
}
}
true
}
}