2011-01-22 111 views
0

我已經創建了一個自定義視圖,我通常附加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。怎麼了?

非常感謝!

回答

1

你有沒有考慮過只是使用按鈕來做你想做的事?你可以使用ToggleButton並在xml中寫一個簡短的選擇器,這將允許你指定一個圖像在按下或不按下時使用。 this question可能對你有一些幫助。

4

嘿,夥計,你的錯,是你沒有實現點擊或觸摸EVNT烏拉圭回合定製view.thr爲view.you沒有點擊EVNT可以使用觸摸事件,而不是這樣的:使下面的代碼工作4 U:


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的點擊

,你會得到它的工作對你

0

爲了讓您的新的自定義按鈕,點擊繪製不要忘記在必要時失效形式。這是一個小問題。例如。

@Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 
      /* Parse Event */ 
      this.invalidate(); 
      return true; 
     }