Tôi có nút tùy chỉnh, mà tôi đang chụp onTouchEvent.Android: Nút tùy chỉnh OnClickListener không được gọi
public class CustomNumber extends ToggleButton {
boolean drawGlow = false;
float glowX = 0;
float glowY = 0;
float radius = 30;
public CustomNumber(Context context) {
super(context);
}
public CustomNumber(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomNumber(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
Paint paint = new Paint();
{
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setAlpha(70);
};
@Override
public void draw(Canvas canvas){
super.draw(canvas);
if(drawGlow)
canvas.drawCircle(glowX, glowY, radius, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
drawGlow = true;
}else if(event.getAction() == MotionEvent.ACTION_UP)
drawGlow = false;
}
glowX = event.getX();
glowY = event.getY();
this.invalidate();
return true;
}
Nút tùy chỉnh này là một phần của lưới. Khi tôi thêm nút này vào lưới, tôi đã đặt OnClickListener cho nó. Tuy nhiên, mã trong OnClickListener không bao giờ được gọi.
đang GridAdapter, nơi tôi đang bổ sung thêm nút với người nghe:
public View getView(final int position, final View convertView, final ViewGroup parent) {
CustomNumber tBtn;
if (convertView == null) {
tBtn = new CustomNumber(context);
tBtn.setTextOff("");
tBtn.setTextOn("");
tBtn.setChecked(false);
tBtn.setId(position);
tBtn.setOnClickListener(tBtnListener);
tBtn.setLayoutParams(new GridView.LayoutParams(35, 35));
} else {
tBtn = (CustomNumber) convertView;
}
return tBtn;
}
Xin vui lòng giúp.
Nếu tôi xóa mã OnTouchEvent, khi đó mã OnClickListener hoạt động. Cả hai sự kiện không thể được xử lý cùng nhau ??? Hãy giúp tôi! – Pria
không chắc chắn nhưng bất kỳ sự khác biệt nào cho dù bạn trả lại đúng hay sai trong onTouch của bạn ở cuối? –
Tôi đã cố gắng trả về false từ onTouchEvent(). nó không hoạt động: (Hơn nữa, nó có sự kiện như MotionEvent.ACTION_DOWN luôn luôn – Pria