Android 如何在松开按钮或视图时添加功能?

Android 如何在松开按钮或视图时添加功能?,android,kotlin,onclicklistener,Android,Kotlin,Onclicklistener,我有多个视图可以单击,但关键是当您单击其中一个视图时,其他视图无法单击,我尝试了以下方法: 1.创建了一个默认为false的布尔变量(var isButtonClicked=false或isViewClicked) 2.然后,当我单击按钮(或视图)(在onClickListener上)时,我将该变量设置为true 现在,当我单击一个按钮(或视图)而其他按钮无法单击时,这一切都可以正常工作,但现在的问题是,我无法松开第一个按钮(视图),而当我被卡住时,我在android中找不到任何关于松开的信息。

我有多个视图可以单击,但关键是当您单击其中一个视图时,其他视图无法单击,我尝试了以下方法:

1.创建了一个默认为false的布尔变量(var isButtonClicked=false或isViewClicked)

2.然后,当我单击按钮(或视图)(在onClickListener上)时,我将该变量设置为true

现在,当我单击一个按钮(或视图)而其他按钮无法单击时,这一切都可以正常工作,但现在的问题是,我无法松开第一个按钮(视图),而当我被卡住时,我在android中找不到任何关于松开的信息。

我将你的“松开”一词理解为“再次单击”

您可以使用可为空的视图引用,而不是使用布尔值,有点像这样:

private var clickedButton: View? = null
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    when (view) {
        clickedButton -> {
            clickedButton = null
            // other things you want to do when toggling the button off
        }
        null -> {
            clickedButton = view
            // other things you want to do when toggling a button on
        }
        else -> {} // Do nothing. Some other button is toggled on.
    }
}
private var isAButtonPressed = false
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    if (isAButtonPressed) {
        buttons.forEach { it.enabled = true }
        // other things you want to do when toggling a button off
    } else {
        buttons.forEach { it.enabled = it == view }
        // other things you want to do when toggling a button on
    }
    isAButtonPressed = !isAButtonPressed 
}
private var clicked按钮:查看?=无效的
lateinit val按钮:列表//将按钮放入列表中,并在onCreate中分配给该按钮
//在每个按钮上设置此侦听器。
val buttonListener=OnClickListener{view->
何时(查看){
单击按钮->{
clickedButton=null
//关闭按钮时要执行的其他操作
}
空->{
单击按钮=查看
//切换按钮时要执行的其他操作
}
else->{}//不执行任何操作。其他一些按钮已打开。
}
}
但实际上最好禁用所有未打开的按钮,这样它们看起来就像你无法按下它们一样。在这种情况下,侦听器应该主动设置所有按钮的启用状态。大概是这样的:

private var clickedButton: View? = null
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    when (view) {
        clickedButton -> {
            clickedButton = null
            // other things you want to do when toggling the button off
        }
        null -> {
            clickedButton = view
            // other things you want to do when toggling a button on
        }
        else -> {} // Do nothing. Some other button is toggled on.
    }
}
private var isAButtonPressed = false
lateinit val buttons: List<Button> // put the buttons in a list and assign to this in onCreate

// Set this listener on each button.
val buttonListener = OnClickListener { view ->
    if (isAButtonPressed) {
        buttons.forEach { it.enabled = true }
        // other things you want to do when toggling a button off
    } else {
        buttons.forEach { it.enabled = it == view }
        // other things you want to do when toggling a button on
    }
    isAButtonPressed = !isAButtonPressed 
}
private var isAButtonPressed=false
lateinit val按钮:列表//将按钮放入列表中,并在onCreate中分配给该按钮
//在每个按钮上设置此侦听器。
val buttonListener=OnClickListener{view->
如果(isAButtonPressed){
buttons.forEach{it.enabled=true}
//关闭按钮时要执行的其他操作
}否则{
buttons.forEach{it.enabled=it==view}
//切换按钮时要执行的其他操作
}
isAButtonPressed=!isAButtonPressed
}

你也可以考虑使用ToGeButton,它有检查和未选中的状态。

你可以显示所有按钮方法的代码吗?什么是“取消点击”?这种行为是你的应用程序独有的,Android不知道它以及如何管理你的自定义布尔字段。view1.setOnClickListener(新OnClickListener{@Override public void onClick(){如果(!isButiionClicked){//实现的代码isButtonClicked=false}});更确切地说,我有10个视图,你是在尝试为每次单击按钮都切换布尔值吗?是的,在每个onclick方法中,我都将布尔值设置为false,因此我不能单击其他按钮(视图)@MichaelKrauseThanks这有助于了解如何操作,因为我的情况有点不同