9

Tôi đang cố gắng tạo bảng/lưới cho một số mục trong ứng dụng của mình và tôi muốn có một đường viền quanh mỗi ô để chia các mục và có liên kết chặt chẽ của cài đặt với mục đó. Ứng dụng này sẽ được sử dụng trong bối cảnh công nghiệp, nơi có thể có những người không quen với Android cần sử dụng ứng dụng này, do đó, cố gắng làm cho ứng dụng trở nên dễ dàng nhất có thể.Đường viền cho các ô trong GridLayout, TableLayout hoặc GridView?

Bảng/lưới sẽ chứa TextView, EditText, Spinner, và Button, và cũng sẽ được cuộn (thông qua ScrollView mẹ).

Tôi đọc về số GridView và thấy rằng (dường như) chỉ có thể nhận các mục theo chương trình, vui lòng sửa tôi nếu tôi sai. Tôi cảm thấy rằng điều này là không cần thiết vì tôi biết những gì tôi muốn và ở đâu. Ngoài ra, tôi đã không cố gắng thêm các mục vào một bố cục lập trình nào được nêu ra vì vậy tôi figured tôi sẽ thử các tùy chọn khác đầu tiên. Ngoài ra, GridView documentation không nói theo cách này hay cách khác nếu đường viền được tự động hiển thị hoặc nếu bạn có thể hiển thị chúng.

Tôi bắt đầu với một TableLayout và có thể nhận mọi thứ ngoại trừ các đường biên giới hoạt động. Tôi đã thử android:divider để nhận các dòng nhưng điều đó không hiệu quả. Một ý nghĩ tôi có là tạo ra một bó của TextView s với nền màu đen và ~ chiều rộng 2dp/chiều cao để tạo đường biên giới của riêng tôi. Điều này cảm thấy như một sự lãng phí lớn mặc dù. Sau đó, tôi cũng đọc số TableLayout documentation và thấy điều này: "Vùng chứa bảng xếp hạng không hiển thị đường viền cho hàng, cột hoặc ô của chúng".

Sau đó, tôi đã thử số GridLayout và có cùng kết quả với số TableLayout. Tôi đã thử paddingmargins, không hoạt động. Ngoài ra, các trạng thái GridLayout documentation: "Lưới bao gồm một tập hợp các đường vô cùng mỏng tách riêng khu vực xem thành các ô".

Câu hỏi của tôi là:

  1. Có một attirbute rằng tôi đã bỏ lỡ trong TableLayout hoặc GridLayout rằng sẽ cho tôi đường biên giới thông qua xml?

  2. Nếu không, thì GridView sẽ cung cấp cho tôi những dòng tôi muốn?

  3. Tôi có thể thêm tất cả các mục được đề cập sâu rộng mà tôi muốn vào GridView không?

Trả lời

5

Có một attirbute rằng tôi đã bỏ lỡ trong TableLayout hoặc GridLayout rằng sẽ cho tôi đường biên giới thông qua xml?

số

Nếu không, sau đó sẽ GridView cho tôi những dòng tôi muốn?

số

Liệu tôi có thể thêm tất cả các mục perviously nêu Tôi muốn GridView?

Có, tuy nhiên, điều gì đó giống như một Spinner sẽ hoạt động, tôi không thể nói. Cách đơn giản nhất, ngoài đỉnh đầu của tôi, để cung cấp cho bạn những dòng bạn tìm kiếm là có mỗi ô của TableLayout hoặc GridLayout là một số thùng chứa (các) tiện ích con cho ô đó, nơi bạn cung cấp vùng chứa một nền tảng là dòng của bạn. A ShapeDrawable có thể được định nghĩa trong XML cho nền đó, sẽ được định lại lại một cách độc đáo dựa trên các yêu cầu thực tế của ô.

+0

Tôi sẽ xem xét 'GridLayout' kết hợp với nền/ShapeDrawable bạn đã đề cập như là một giải pháp. Cảm ơn bạn đã thông tin! – TronicZomB

8

Tôi đã thực sự có thể để đạt được nhìn mong muốn bằng cách thiết lập android:background="#000000" trong tầm nhìn GridLayout và sau đó trong các mục con tôi đặt android:background="#8CDD81" (chỉ số màu xanh lá cây) và kết hợp với android:layout_margin="2dp" tôi đã có thể để có được "lưới" dòng mà tôi muốn. Nhờ CommonsWare mặc dù đã khiến tôi suy nghĩ theo một hướng mới đã trở thành một giải pháp.

EDIT: Điều này không hoạt động như mong đợi. Bạn cần số android:layout_alignLeft/Right chỉ khả dụng qua RelativeLayout để có chiều rộng phù hợp trên các mục con. Chưa thử nghiệm điều này bằng cách sử dụng ý tưởng này, child items trong phạm vi RelativeLayout trong phạm vi GridLayout.

+0

Cảm ơn đã giúp tôi suy nghĩ đúng hướng. Tôi đã có thể thực hiện hiệu ứng "gridline" bằng cách sử dụng (trong trường hợp của tôi) 'LinearLayout' được lồng vào nhau với các màu nền và lề khác nhau. – ianthetechie