2013-03-30 34 views
5

Tôi đang xây dựng một Ứng dụng Android có sự kiện theo thời gian và tôi không chắc bố cục nào nên sử dụng để tạo dòng thời gian của mình.Tạo dòng thời gian bằng cách sử dụng chế độ xem tùy chỉnh

Sự kiện có thể có độ cao khác nhau và có thể phát triển khi người dùng nhấn vào chúng nhưng chúng có cùng chiều rộng;

   . 
       . 
       . 
------------- | 
| Event 4 > | -------------- 
------------- | < Event 7 | 
       | |   | 
       | -------------- 
       . 
       . 
       . 

Tôi có hai loại chế độ xem:

  • EventView phù thủy giữ thông tin sự kiện và drow phác thảo của ông
  • TimeBarView phù thủy là thanh vào giữa (có một số tài sản và được mở rộng trên rất long span

Làm cách nào tôi có thể đặt các mặt hàng của mình để nó tôn trọng thời gian trên dòng thời gian của tôi (ví dụ 1 tuần có thể là 10px)

Mọi trợ giúp đều được đánh giá cao. Cảm ơn!

+0

Bạn có thành công khi tạo chế độ xem này không ?? Vui lòng chia sẻ mã. –

+0

@Romain bất kỳ thành công nào ..? Vui lòng trả lời .. –

+0

@Pankaj Kumar bạn đã thành công chưa? –

Trả lời

1

Tôi đang giải quyết cùng một vấn đề ngay bây giờ.

Tôi không có một giải pháp đầy đủ chưa, nhưng tôi có một ý tưởng:

Vì bạn phải bên để timeline, ListView là không thích hợp vì sự kiện có thể chồng lên nhau.

Thay vào đó, hãy xem xét sử dụng 2 cột GridView. Tôi khuyên bạn nên sử dụng AndroidStaggeredGrid, hỗ trợ các kích thước mục khác nhau.

Đối với "Thanh thời gian" thực tế chạy ở giữa, tôi sẽ chỉ sử dụng một đường hẹp làm nền cho GridView.

Sẽ không có điểm đánh dấu nào trên dòng thời gian. Thay vào đó, các điểm đánh dấu sẽ nằm trên chính EventView, ở bên trái hoặc bên phải, theo cách mà điểm đánh dấu rơi chính xác trên thanh thời gian.

Bằng cách này, khi bạn cuộn lưới, nó sẽ cho ảo giác rằng thanh thời gian chính nó đang cuộn.

Để biểu thị khoảng thời gian trống, chỉ cần thêm chế độ xem trống mà chiều cao của nó tỷ lệ thuận với khoảng thời gian mà nó đại diện.

Hy vọng điều này sẽ giúp ...

+0

Điều đó có thể đã hoạt động :) – Romain

0

Tôi không chắc có đủ thông tin trong bài đăng của bạn để xác định chính xác những gì đang diễn ra trong khi bố cục, nhưng RelativeLayout có thể sẽ làm những gì bạn cần. Bạn có thể sử dụng leftMargin làm vị trí tuyệt đối hoặc "quy tắc" như RelativeLayout.LEFT_OF

Điều đó nói rằng, rất dễ dàng để tạo bố cục tùy chỉnh với khung Android. Chỉ cần ghi đè onMeasure và onLayout. onMeasure nên báo cáo dung lượng lớn của container (thường là lớn như bố mẹ cho phép) và khá đơn giản.

onLayout thường trông như thế này:

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    int count = getChildCount(); 
    for (int i = 0; i < count; i++) { 
     View child = getChildAt(i); 
     if (child.getVisibility() != GONE) { 
      // do the layout for each child here, with child.layout 
      // e.g., child.layout(0, 0, r, b); 
    } 
} 

View.layout mất 4 đối số - hàng đầu, bên trái, phía dưới, và ngay - khá đơn giản. Bạn có quyền truy cập vào kích thước của vùng chứa trong l, t, r và b.

HTH

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