单击/触摸时按钮行为的自定义视图

时间:2011-01-22 08:46:01

标签: android

我创建了一个自定义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。怎么了?

非常感谢!

3 个答案:

答案 0 :(得分:4)

嘿哥们,你的错是你没有实现点击或触摸你的自定义视图。你没有点击进行查看。你可以使用触摸事件代替这个:所以下面的代码工作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;
        }