Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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
Android:如何在组中创建类似按钮的单选按钮?_Android - Fatal编程技术网

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