Android 安卓-听一个被禁用的按钮
单击禁用的Android 安卓-听一个被禁用的按钮,android,button,actionlistener,Android,Button,Actionlistener,单击禁用的按钮,如何响应事件。 我有一个要求,当单击禁用的按钮时,我必须显示对话框,但我分配的侦听器即使在我设置可点击(false) 我是安卓noob,抱歉。禁用的按钮无法监听任何事件,但您可以通过扩展按钮类自定义自己的按钮,以定义禁用按钮,而不是禁用按钮,保持启用按钮,但使用标志控制“内部状态”我通过使用一个标志来保持按钮的状态,解决了这个问题 private boolean isMyButtonEnabled = false; public void onMyButtonClick(Vie
按钮
,如何响应事件。
我有一个要求,当单击禁用的按钮
时,我必须显示对话框
,但我分配的侦听器即使在我设置可点击(false)
我是安卓noob,抱歉。禁用的按钮无法监听任何事件,但您可以通过扩展
按钮
类自定义自己的按钮,以定义禁用按钮,而不是禁用按钮,保持启用按钮,但使用标志控制“内部状态”我通过使用一个标志来保持按钮的状态,解决了这个问题
private boolean isMyButtonEnabled = false;
public void onMyButtonClick(View v) {
if(isMyButtonEnabled){
..
}
}
我找了一下,但没有找到任何东西来听编辑文本块。所以我找到了另一种方法来激活它。如果您已经在收听附近的按钮或区域,则可以启用
SetOnLongClickListener
来激活该块。这将是一个秘密,但你可以告诉用户
button.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
editText.setEnabled(true)
return true;
}
});
我将通过使用
选定的
状态来解决这个问题,该状态通常可用于小部件,也可用于状态列表绘图。只需搜索isSelected的用法,就会在ListView、GridView、TextView和TableLayout中显示结果。文件说明
视图通常是
*在AdapterView(如ListView或GridView)的上下文中选择;
*选定视图是高亮显示的视图
您应该使用激活状态来启用或禁用按钮。它是可点击的,或者当有人指向时使用选中或选中状态。每个状态都有不同的含义,因此请仔细使用它。例如,您可以使用
#setActivated()
方法。禁用视图将忽略所有事件。
.
然后,如果需要,您可以使用android:state\u activate
属性自定义文本和背景样式:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="false"
android:color="@color/a_color" />
<item android:state_activated="true"
android:color="@color/another_color" />
</selector>
您可以覆盖onTouchEvent并创建如下侦听器:
class MyButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.materialButtonStyle) : MaterialButton(context, attrs, defStyleAttr) {
private var onDisableClickListener: OnClickListener? = null
override fun onTouchEvent(event: MotionEvent?): Boolean {
if (!isEnabled && event?.action == MotionEvent.ACTION_DOWN) {
onDisableClickListener?.onClick(this)
}
return super.onTouchEvent(event)
}
fun setOnDisableClickListener(l: OnClickListener?) {
onDisableClickListener = l
}
}
在您的活动中:
button.setOnDisableClickListener {
Toast.makeText(this), "The button is disabled", Toast.LENGTH_SHORT).show()
}
button.setOnClickListener {
Toast.makeText(this), "The button is enabled", Toast.LENGTH_SHORT).show()
}
尽管这是公认的答案,但并不特别有用-(你(或其他人)可以对此进行扩展吗?当你可以使用自己的setActivated()方法,然后使用isActivated()检查时,无需添加新标志。这是一个很好的选择。应该更高,甚至是公认的答案,imho。