我试图创建一个区域,所以当ToggleButton处于打开状态时,您可以在该区域中切换按钮,如果ToggleButon已关闭,则将无法在该区域中切换按钮。
对于这个特定区域,我使用了FrameLayout,因此我可以将两个LinearLayout彼此堆叠。因此,当我按下“编辑按钮”时,上面半透明的按钮将以setVisibility(View.GONE)
消失,现在您可以单击按钮了。
问题:该区域中的按钮始终是可点击的
我可以用button.setClickable(true/false)
分别切换它们,但是有解决方案,因此您无法单击顶部的LinearLayout(例如“不可点击”)?
链接到布局的图像:https://i.imgur.com/eTyhCDc.png
所需行为:
命中编辑->蓝色透明布局上的半透明布局消失->现在可以单击TESTOFF1和TESTOFF2。
->点击完成->半透明的版式再次出现在顶部,并且其下方的按钮不再可单击(无需对每个按钮使用.setClickable
)。
答案 0 :(得分:0)
在任何触摸事件下,顶部视图都会首先破裂。如果顶视图无法处理触摸,则下面的视图可能会降到底视图。顶层是LinearLayout
,因此,但默认情况下,它不处理触摸,因此它允许触摸事件渗透到乐于响应的按钮。
解决此问题的一种方法是将touch listener放置在仅返回true的半透明视图上。因此,LinearLayout
将使用事件,而不会让按钮看到它们。
视图消失后,按钮变为顶视图,因此它们将看到点击。
如果您想了解有关如何处理触摸事件的更多信息,请阅读this Stack Overflow answer以获得出色的解释。
答案 1 :(得分:0)
editButton.setOnClickListener {
button1.isEnabled = !button1.isEnabled
button2.isEnabled = !button2.isEnabled
editButton.setText(
if (button1.isEnabled) {
R.string.done
} else {
R.string.edit
}
)
transparentView.isInvisible = button1.isEnabled
}
此示例使用的是kotlin和Android KTX库
Java版本
editButton.setOnClickListener(new OnClickListener {
button1.setEnabled(!button1.isEnabled());
button2.setEnabled(!button2.isEnabled());
editButton.setText(button1.isEnabled() ? R.string.done : R.string.edit);
transparentView.setVisibility(button1.isEnabled() ? View.INVISIBLE : View.VISIBLE);
});