如何根据点击已停用的Button
来回复活动。
当我点击已禁用的Dialog
但我已分配的监听器即使在我Button
setClickable(false)
是一个安卓机器人,对不起。
答案 0 :(得分:7)
禁用按钮无法收听任何事件,但您可以通过扩展Button
类来自定义您自己的按钮,以制定您自己的禁用定义
答案 1 :(得分:6)
例如,您可以改用#setActivated()
方法。禁用视图将忽略所有事件。
https://developer.android.com/reference/android/view/View.html#setActivated(boolean)。
然后,您可以根据需要使用android:state_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>
答案 2 :(得分:4)
不是禁用它,而是启用它,但使用标志来控制“内部状态”
答案 3 :(得分:1)
我通过使用一个标志来保持按钮的状态来解决这个问题。
private boolean isMyButtonEnabled = false;
public void onMyButtonClick(View v) {
if(isMyButtonEnabled){
..
}
}
答案 4 :(得分:1)
我找了它,但没有听取EditText块。所以我找到另一种方法来激活它。如果您已经听过近距离按钮或区域,则可以启用SetOnLongClickListener
来激活该按钮。这将是一个秘密,但你可以告诉用户。
button.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
editText.setEnabled(true)
return true;
}
});
答案 5 :(得分:0)
我即将通过使用selected
状态来解决这个问题,该状态通常可用于小部件,并且可以在状态列表drawable中使用。对isSelected
的使用进行简单搜索会在ListView,GridView,TextView和TabLayout中生成结果。文档说明
通常是视图 *在ListView或GridView等AdapterView的上下文中选择; *所选视图是突出显示的视图。
答案 6 :(得分:0)
您应该使用激活状态来启用或禁用按钮。它是可单击的,或者有人指出使用选中或选中状态。每个状态都有不同的含义,因此请小心使用
答案 7 :(得分:0)
您可以覆盖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 (event?.action == MotionEvent.ACTION_DOWN && !isEnabled) {
onDisableOnClickListener?.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()
}