2010-09-24 31 views
27

Có thể chụp nút nhả chỉ khi chúng tôi chụp lần nhấp bằng cách sử dụng onClickListener()OnClick()?Phát hành nút chụp trong Android

Tôi muốn tăng kích thước của một nút khi được nhấn và di chuyển trở lại kích thước ban đầu khi nhấp chuột được nhả. Bất cứ ai có thể giúp tôi làm thế nào để làm điều này?

Trả lời

47

Bạn nên đặt OnTouchListener trên nút của mình.

button.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) { 
      increaseSize(); 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      resetSize(); 
     } 
    } 
}; 
+0

OnTouchListener chỉ lắng nghe khi chạm phải không? Tôi muốn nghe nhấp chuột và phát hành. Làm thế nào để đi abt nó? – mdv

+1

Sự kiện cảm ứng xuống và lên thực tế là một cú nhấp chuột. Bạn cũng có thể đặt cả onclicklistener và ontouchlistener trên nút. –

+4

Chỉ cần tự hỏi tại sao kiki nhận được câu trả lời được chấp nhận khi tôi cảm thấy đưa ra một câu trả lời chính xác hơn? –

1

Bạn có thể thực hiện việc này bằng cách ghi đè onKeyDownonKeyUp. Cả hai đều được kế thừa từ android.widget.TextView. Vui lòng xem android.widget.Button doc để biết thêm thông tin.

+1

onKeyDown và onKeyUp là cho các sự kiện bàn phím nếu tôi không wrong.Is có thể chụp nhấp kiện cho họ? – mdv

2

sử dụng một trình chọn OnTouchListener hoặc OnKeyListener thay thế.

0

Eric Nordvik có câu trả lời đúng ngoại trừ việc

event.getAction() == MotionEvent.ACTION_UP 

không bao giờ có thực hiện đối với tôi. Thay vào đó, tôi đã triển khai

button.setOnClickListener(new OnClickListener() { 
     @Override 
     public boolean onClick(View v) { 
      resetSize();  
    } 
}; 

cho liên lạc ACTION_UP.

3

Bạn cũng phải xử lý MotionEvent.ACTION_CANCEL. Vì vậy, các mã sẽ là:

button.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP || 
      event.getAction() == MotionEvent.ACTION_CANCEL) { 
      increaseSize(); 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      resetSize(); 
     } 
    } 
}; 
Các vấn đề liên quan