gpt4 book ai didi

android - 如何检测android中禁用复选框的触摸事件

转载 作者:行者123 更新时间:2023-12-05 00:07:33 27 4
gpt4 key购买 nike

我有一个带有几个复选框的布局。当一个复选框被选中时,其他复选框将设置为 CHECKED=trueENABLED=false。现在,我希望用户能够点击任何禁用的复选框,如果他这样做,一个将被设置为启用并选中,而所有其他复选框将被禁用。

当复选框设置为 ENABLED=false 时,onTouchListeneronClickListener 似乎不会被调用。谁能帮忙?

最佳答案

您无法在禁用的复选框上接收事件。如果您将禁用的复选框放在像 FrameLayout 这样的布局上,您可以在单击布局时收到事件,但不会在禁用的复选框中收到事件。例如,如果您想在禁用的复选框上捕获事件,最好的方法是简单地模拟禁用的复选框,然后捕获长按事件以再次激活。

我所做的是一个带有白色文本颜色但以灰色文本颜色开始且未选中的复选框,带有一个 bool 停止变量,您之前在每个 onCheckedChanged 方法中检查它。除非您更改 bool 停止变量,否则永远不会选中复选框。您可以根据需要多次按下复选框,但没有任何反应。它似乎只是被禁用,但是当您长按时,您会解锁 bool 停止变量并将灰色文本颜色复选框更改为白色,就像普通复选框一样。您可以在需要时更改 stopper 变量并“再次禁用它”

在 color.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="grey">#808080</color>
</resources>

在 main.xml 中:

<CheckBox
android:id="@+id/checkbox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="text" />

在main.java代码中,onCreate方法:

//define a boolean stopper variable to check on event
boolean chkActivated = false;

checkbox = (CheckBox) findViewById(R.id.checkbox1);
checkbox.setTextColor(getResources().getColorStateList(R.color.grey));
checkbox.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(chkActivated){
if (isChecked) {
//Do everthing you want when checked
}else{
//Do everthing you want when unchecked
}
}else{
checkbox.setChecked(false);
Toast.makeText(Activity.this, "It is disabled. to activate press long click"), Toast.LENGTH_SHORT).show();
}
}
});

checkbox.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
chkActivated = true;
checkbox.setTextColor(getResources().getColorStateList(R.color.white));
checkbox.setChecked(true);
return true;
}
});

希望对你有帮助

关于android - 如何检测android中禁用复选框的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com