2011-08-17 52 views
31

Tôi đang làm việc trên ứng dụng android dành cho động cơ đặt chỗ như hệ thống đặt vé máy bay. Để tìm nạp nội dung nói tất cả các hãng hàng không sẵn có cụ thể cho tìm kiếm hành khách, điều này sau đó được hiển thị trên màn hình của thiết bị di động.Bố cục lưới Vs. Bố cục bảng

Bố cục bảng, bố cục bảng hoặc bố cục lưới, sẽ xem xét hiệu quả thời gian tải màn hình, mức tiêu thụ bộ nhớ hệ thống và các tính năng bổ sung?

Trả lời

-3

Tôi nghĩ rằng TableLayout sẽ dễ sử dụng hơn. Đối với GridLayout, bạn cần xây dựng các bộ điều hợp tùy chỉnh và do đó nó tạo ra một ứng dụng phức tạp hơn.

Nhìn vào các sceensize khác nhau, GridLayout sẽ tự chọn số cột và hàng tốt theo nội dung và sẽ linh hoạt hơn khi thêm các mục.

Ngoài ra GridLayout sẽ linh hoạt hơn nhưng đó là một số công việc khác cần thực hiện.

+7

Đã đưa ra câu trả lời này -1 vì nó hoàn toàn sai. GridLayout không yêu cầu adapter ... Bạn đang nghĩ đến GridView .... Đây là các tài liệu cho GridLayout: https://developer.android.com/reference/android/widget/GridLayout.html – Justin

2

Tôi nghĩ rằng GridView sẽ hoạt động tốt hơn vì vì nó được triển khai với chế độ xem tái chế và các chất liệu được kế thừa từ AbsListView. GridView khó triển khai hơn vì bạn phải sử dụng với Adapter nhưng sẽ hoạt động hiệu quả nếu bạn có nhiều lượt xem nặng để tải như hình ảnh

30

** EDIT: Dòng này đúng khi câu trả lời này được viết nhưng không còn áp dụng cho 99,9% + của tất cả các thiết bị Android: There is no GridLayout in the Android API. **

(Lưu ý: Tính đến cấp API 14, cuối cùng là GridLayout; xem thêm câu trả lời bên dưới. đến API 7. Tuy nhiên, mô tả của câu trả lời này về GridView vẫn chính xác và được nêu rõ.)

Nếu bạn có nghĩa là GridView, TableLayout và GridView là hoàn toàn những thứ khác nhau.

GridView về cơ bản giống như một ListView nhưng các mục của nó được sắp xếp theo một khung lưới nghiêm ngặt. Nó được gắn vào một Adapter, và lấy các khung nhìn từ Adapter có người dùng cuộn qua nó. Tất cả các phần tử trong lưới phải có cùng kích thước. Người dùng có thể di chuyển bộ chọn hiển thị qua từng mục - mục tiêu của GridLayout là hiển thị dữ liệu từ Bộ điều hợp và cho phép người dùng điều hướng và chọn từng mục được hiển thị. Sự khác biệt duy nhất từ ​​một ListView là các mục được đặt trong một lưới thay vì trong một danh sách theo chiều dọc.

TableLayout chỉ là một trình quản lý bố cục, giống như một bảng trong HTML. Nó không tự làm bất kỳ cuộn; để có thứ gì đó cuộn bạn phải đặt TableLayout trong một ScrollView. Điều này ngụ ý rằng tất cả các dữ liệu mà bạn đang hiển thị phải được điền vào trong TableLayout ở phía trước, vì vậy ScrollView biết tổng không gian cần thiết để cuộn. Nó cũng không trực tiếp cung cấp cho bạn lựa chọn hoặc tương tác trên mỗi mục, bởi vì một TableLayout không có các mục, nó chỉ là một trình quản lý bố cục.

Bạn đã không thực sự cung cấp đủ thông tin hữu ích gần về những gì bạn đang thực sự cố gắng làm cho bất kỳ ai đề xuất nội dung cần sử dụng. Nó phụ thuộc rất nhiều vào những gì cụ thể bạn muốn.

Tôi có ý nghĩa gì sẽ hữu ích về "tính năng bổ sung"?!? Vâng những gì các tính năng bạn đang tìm kiếm!

Dù sao dưới dạng nguyên tắc chung, chế độ xem dựa trên Bộ điều hợp sẽ được sử dụng cho mọi tình huống mà bạn có lượng dữ liệu đáng kể mà người dùng đang cuộn chế độ xem; chúng hiệu quả hơn rất nhiều so với việc phải tạo toàn bộ hệ thống phân cấp khung nhìn phía trước để hiển thị dữ liệu của bạn. Họ cũng là những người duy nhất tự động cung cấp lựa chọn mỗi mục và các tính năng khác như vậy. Chế độ xem chính cho ứng dụng này sử dụng là ListView, mặc dù GridView cũng có thể được sử dụng.

+75

Vì ** API Level 14 ** (Ice Cream Sandwich), có [GridLayout] (http://developer.android.com/reference/android/widget/GridLayout.html). –

+7

API LEVEL 14 hỗ trợ Bố cục Bố cục và Bố cục Không gian.Xem liên kết này http://android-developers.blogspot.in/2011/11/new-layout-widgets-space-and-gridlayout.html – bapatla

+5

V7 (API Cấp 7 - 2.1) thư viện hỗ trợ Android có GridLayout. –

17

Kể từ Android 4.0, có một thứ như GridLayout. GridLayout luôn thích hợp hơn với TableLayout. Nó cung cấp tất cả những gì bạn đã có trên TableLayout và có thể thay thế các bố cục khác.

Điều này có vẻ khá thú vị và dường như Google muốn nó phổ biến như LinearLayout (theo video của họ về Android 4.0).


EDIT: nếu bạn phải hiển thị nhiều mục, hãy cân nhắc sử dụng RecyclerView với GridLayoutManager. Điều này có thể giúp về mặt bộ nhớ và sử dụng CPU.

+0

@ToolmakerSteve Câu hỏi đặt ra là có chế độ xem bố cục lưới, nhưng điều này không có sẵn lúc đó, vì vậy khi nó có sẵn, tôi đã viết rằng bạn có thể sử dụng nó làm giải pháp cho vấn đề của mình. Tất nhiên, nếu có tấn mục để hiển thị, một RecyclerView với GridLayoutManager sẽ phù hợp hơn (cũng được thêm vào sau).TableLayout là cái gì đó hầu như không bao giờ được sử dụng, do hành vi kỳ lạ của nó và sử dụng gây phiền nhiễu. –

3

Đây là một bài thuyết trình tốt đẹp của GridLayout mà cũng vạch ra sự khác biệt so với TableLayout: http://blog.stylingandroid.com/archives/669

Một trong những khác biệt quan trọng nhất tuy nhiên là nó chỉ có sẵn trong ICS (Ice Cream Sandwich) và mới hơn. Điều này hiện có nghĩa là ít hơn 30% của market share vì vậy đối với hầu hết các nhà phát triển, câu trả lời sẽ là: đợi một vài năm trước khi bạn sử dụng GridLayout. YMMV tất nhiên.

+2

Nó đã được thêm vào thư viện hỗ trợ V7. –

+1

Liên kết http://blog.stylingandroid.com/archives/669 bị hỏng. @ johndodo nếu bạn biết liên kết được cập nhật, bản chỉnh sửa sẽ được đánh giá cao. –

+1

Tôi đã thay đổi liên kết đến lưu trữ web. Lưu ý rằng bạn có thể tự làm như vậy, cảm ơn bạn đã chỉ ra nó. – johndodo

0

Trong bố cục lưới, các thành phần có thể tự động đặt thành chế độ xem bằng cách lấy numcolumns = "autofit". Ở đây chúng tôi không cần phải đặt bao nhiêu hàng & cột chúng tôi yêu cầu, nhưng trong bố cục bảng, ở đó chúng tôi không có loại tùy chọn & chúng tôi phải đặt bao nhiêu hàng & cột mà chúng tôi yêu cầu. Trong bố trí bảng, chúng tôi không thể chèn nhiều hơn 1 mục trong một hàng mà không sử dụng bố trí tương đối

9

cấu hình TableLayout thường đơn giản để chứa, như GridLayout hỗ trợ cả hàng và cột spanning. Bảng xếp hạng có thể bị xóa vì chúng không yêu cầu bởi GridLayout. Đối với cùng một giao diện người dùng, GridLayout thường sẽ nhanh hơn và mất ít hơn bộ nhớ hơn là một TableLayout.

TableLayout được hỗ trợ trên tất cả các phiên bản Android, trong khi GridLayout đòi hỏi mức 11 (Android ICS 4.0) hoặc cao hơn, nhưng nó có thể dễ dàng bổ sung thông qua hỗ trợ librarry v7 để hỗ trợ mức 7 (Android 2.1) hoặc cao hơn

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