2011-01-28 42 views
12

Ok, đây là giao dịch. Tôi muốn di chuyển các mục trong lớp thư viện mở rộng của mình để thay đổi thứ tự của hình ảnh. Cách tôi đang làm bây giờ:onDraw() trên Chế độ xem vẽ phía sau bố cục

  • trên báo chí dài loại bỏ các sản phẩm được chọn hiện tại,
  • sử dụng onDraw() để vẽ cùng một hình ảnh vì vậy tôi có thể di chuyển nó xung quanh sử dụng onTouchEvent()
  • về phát hành thêm mục một lần nữa

Điều này làm việc tốt nhưng vấn đề là khi sử dụng phương pháp onDraw(), nó sẽ vẽ hình ảnh đằng sau các mục trong thư viện. Có cách nào để thay đổi mức độ ưu tiên của nội dung được vẽ không?

+0

Bạn đang gọi super.onDraw() sau khi thực sự vẽ hình ảnh? – pankajagarwal

+0

Vâng hình ảnh trong thư viện được vẽ bởi bộ sưu tập, vì vậy tôi không thực sự có quyền kiểm soát điều đó. tôi chỉ muốn vẽ những hình ảnh đó từ trong lớp thư viện mở rộng – Nick

Trả lời

33

Vâng tôi thấy câu này ra sau khi đi vào một hướng đi hoàn toàn khác =/

Đây là giải pháp cho những người có cùng một vấn đề:

Trong constructor (hoặc bất cứ nơi nào khác mà bạn khởi tạo các thành phần) thiết setWillNotDraw(false) và ghi đè dispatchDraw(). dispatchDraw() thu hút các trẻ em ViewGroup để bạn có thể tự quyết định xem bạn có muốn vẽ phía sau hoặc đầu các chế độ xem khác không.

Ví dụ lấy từ Custom drawing on top of Gallery view (and it's child views)

@Override 
protected void dispatchDraw(Canvas canvas) { 
    super.dispatchDraw(canvas); 

    // do your drawing stuff here 
    canvas.drawPath(mPath,mPaint); 
} 
+2

+1 vì thông tin này khó tìm thấy bằng cách tìm kiếm. Sử dụng phương pháp này thành công để vẽ trên màn hình trợ giúp trên đầu trang của GridView. Lỗi chính tả nhỏ: setWillNotDraw (false) nên được gọi; willNotDraw() là getter cho cùng tham số đó. N.B .: setWillNotDraw (false) vô hiệu hóa các tối ưu hóa cho rằng ViewGroup dựa hoàn toàn vào các chế độ xem con để tự vẽ. – Carl

+0

Vui lòng chia sẻ thêm mẫu mã. Nó thực sự dễ hiểu bằng cách xem mã. +1 cả hai –

+0

Nick bạn vẫn còn nhớ điều này? bạn có ghi đè dispatchDraw() lên hình ảnh của thư viện hoặc trong chế độ xem tùy chỉnh không? Hoặc bạn đang làm tất cả trong một chế độ xem? Bất kỳ trợ giúp đánh giá cao – quinestor

Các vấn đề liên quan