2013-03-18 30 views
12

Tôi có một số ViewPager có chứa hai đoạn. Trong bất kỳ đoạn nào tôi có thể chạm vào một địa điểm, hãy vuốt để chuyển sang một số khác fragment. Một trong những mảnh có chứa một danh sách. Các mục trong danh sách chứa một số TextView và một ImageView. Vấn đề là, nếu bạn kéo đã được bắt đầu từ việc khai thác các ImageView, nó là OK. Nhưng nếu nó là từ TextView, kéo không bao giờ được biết đến ViewPager, kết quả là 'chuyển đổi trơn tru' không bao giờ xảy ra.TextView bên trong ViewPager chặn các sự kiện chạm

Bất kỳ đầu mối nào về điều này?

CHỈNH SỬA

Ảnh này hiển thị cách GUI của tôi. Nếu kéo đã được bắt đầu từ TextViewE, nó không bắt đầu. enter image description here

+1

Bạn nên đăng một số mã. Không có gì đặc biệt về 'TextView' ghi đè' ViewPager'. – adneal

+1

@aneal xem hình ảnh có giải thích ý tưởng của tôi hay không – tactoth

+0

Điều này khiến tôi rất nhiều, tôi cũng rất vui khi thấy câu trả lời. TextView bên trong touchView đánh chặn liên lạc, ViewPager trở nên hầu như không sử dụng được. – pechenie

Trả lời

35

điều này làm phiền tôi quá, nhưng tôi đã cố gắng tìm ra câu trả lời.

Về cơ bản, trường hợp là: nếu chế độ xem có thể cuộn theo chiều ngang, nó chặn sự kiện chuyển động ngang và ViewPager không thể xử lý được nữa.

Kể từ API Level 14 TextView có android: scrollHorizontally tài sản (và setHorizontallyScrolling (boolean) phương pháp), trong đó, nếu thiết lập là true, làm cho TextView để đánh chặn các sự kiện chuyển động cuộn ngang.

Bạn có thể thiết lập nó là false hoặc trong XML hoặc ngay trong mã này, nhưng xem ra : android: singleLine lực lượng sở hữu android: scrollHorizontally được thiết lập để đúng! Điểm rất khó khăn! Nhưng may mắn thay, bạn thường có thể thay thế một cách an toàn thuộc tính dòng đơn với android: maxLines = "1" và cần thiết ellipsize giá trị.

Chúc may mắn!

+1

Tìm thấy cùng một vấn đề và phát hiện ra rằng việc xóa câu lệnh đơn lẻ được giải quyết. Chỉ cần tìm ra lý do tại sao: D. Cảm ơn! –

+0

Xin lỗi vì đã quên kiểm tra câu trả lời này sớm. Nó là tuyệt vời. – tactoth

+0

Nếu tôi muốn đặt vùng chọn thành chế độ xem văn bản, tôi cần phải đặt đơn lẻ thành true. Có cách nào để tránh nó và cho phép marquee quá? – berserk

0

bạn có thể ghi đè lên onTouchEvent() của TextView:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     return false; 
    } 

    return super.onTouchEvent(event); 
} 
Các vấn đề liên quan