我创建了一个自定义View,我通常将onClickListener附加到。我想要一些像行为一样的按钮:如果按下它,它应该改变它在onDraw()方法中定义的外观。但是,此代码不起作用:
//In my custom View:
@Override
protected void onDraw(Canvas canvas)
{
boolean pressed = isPressed();
//draw depending on the value of pressed
}
//when creating the view:
MyView.setClickable(true);
按下的值始终为false。怎么了?
非常感谢!
答案 0 :(得分:4)
myView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
break;
}
return true;
}
});
在此代码中使用action_up进行单击,您可以使用它
答案 1 :(得分:1)
您是否考虑过使用按钮来做您想做的事情?您可以使用ToggleButton并在xml中编写一个短选择器,它允许您指定在按下时使用的图像。 this question可能对您有所帮助。
答案 2 :(得分:0)
要在点击时使用新的自定义按钮,请不要忘记根据需要使表单无效。这有点儿了。例如。
@Override
public boolean onTouch(View v, MotionEvent event)
{
/* Parse Event */
this.invalidate();
return true;
}