[英]Android - Custom Button gets stuck “Pressed”
我在Android应用程序中创建了一个自定义按钮,该按钮基本上具有两个不同的视图。 有一个图像用于未按下按钮,另一图像用于按下按钮。 以下是我实现按钮的方式以及它对用户的响应。
private void registerListeners() {
calcButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
calcButton.requestFocusFromTouch();
calcButton.setImageResource(R.drawable.calc_button_pressed);
return false;
}
});
calcButton.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
calcButton.setImageResource(R.drawable.calc_button_not_pressed);
}
});
calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mathCalculation();
calcButton.setImageResource(R.drawable.calc_button_not_pressed);
}
});
}
我的问题是存在一个“错误”,如果用户触摸该按钮并将其图形拖离该按钮,该按钮将保持按下状态。 我上面实现的一种解决方法是“ setOnFocusChangeListener”,因此一旦用户选择了其他内容,它就会弹出。
我想要它,以便当用户将按钮拖到那里时,按钮弹出来。
所有建议,不胜感激!!!
谢谢,
您无需编写单独的按钮类即可获得该行为,您可以通过可绘制的xml实现它。 在您的xml中保存此文件,并将其设置为按钮的背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/calc_button_pressed" />
<item android:drawable="@drawable/calc_button_not_pressed" />
</selector>
在您的onTouch方法中,检查事件操作。
calcButton.setImageResource(R.drawable.calc_button_not_pressed);
http://developer.android.com/reference/android/view/MotionEvent.html
您可以使用use onTouch
。 然后使用当用户触摸时将触发的ACTION_OUTSIDE
移出视图边界。
编辑1:更具体:
OnTouchListener(MotionEvent e) {
switch(e.getAction()) {
case MotionEvent.ACTION_OUTSIDE: // switch the image if the button
}
}
这是因为单击事件仅在触摸和释放时才“发生”。 如果您要触摸并移到外面,那不是单击。
要使用StateListDrawable完成您想要的操作 ,它就是为此而创建的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.