9

Próbuję utworzyć tabelę/siatkę dla niektórych elementów w mojej aplikacji i chciałbym mieć obramowanie wokół każdej komórki, aby podzielić elementy i mieć spójne skojarzenie ustawienia z elementem. Ta aplikacja będzie używana w środowisku przemysłowym, w którym mogą znajdować się osoby nieobeznane z systemem Android, które muszą z niej korzystać, starając się, aby było to tak proste, jak to tylko możliwe.Linie graniczne dla komórek w GridLayout, TableLayout lub GridView?

tabela/siatka zawiera TextView, EditText, Spinner i Button, a także Przesuwne (przez ScrollView rodzic).

Przeczytałem o GridView i okazało się, że (wydaje się), że programowanie jest możliwe tylko programowo, proszę mnie poprawić, jeśli się mylę. Czułem, że to nie jest konieczne, ponieważ wiem, jakie przedmioty chcę i gdzie. Ponadto, nie próbowałem programowo dodawać elementów do układu, więc pomyślałem, że najpierw wypróbuję inne opcje. Ponadto, GridView documentation nie mówi w taki czy inny sposób, jeśli linie graniczne są wyświetlane automatycznie, lub jeśli możesz je w ogóle pokazać.

Zacząłem od TableLayout i udało mi się uzyskać wszystko oprócz linii granicznych do pracy. Próbowałem android:divider, aby uzyskać linie, ale to nie zadziałało. Jedna myśl, jaką miałem, polegała na stworzeniu wiązki TextView s z czarnym tłem i ~ 2dp szerokości/wysokości, aby utworzyć własne linie graniczne. Wydaje się to jednak ogromną stratą. Następnie przeczytałem także TableLayout documentation i stwierdziłem, że: "Kontenery TableLayout nie wyświetlają linii brzegowych dla swoich wierszy, kolumn ani komórek."

Potem wypróbowałem GridLayout i uzyskałem takie same wyniki, jak TableLayout. Próbowałem padding i margins, ale nie działałem. Ponadto, GridLayout documentation stwierdza: "Siatka składa się z zestawu nieskończenie cienkich linii, które oddzielają obszar wyświetlania na komórki."

Moje pytania są następujące:

  1. Czy istnieje attirbute że brakowało mi w TableLayout lub GridLayout że da mi linii granicznych poprzez XML?

  2. Jeśli nie, to czy GridView da mi wiersze, które chcę?

  3. Czy będę w stanie dodać wszystkie wymienione wcześniej przedmioty do GridView?

Odpowiedz

5

Czy istnieje attirbute że brakowało mi w TableLayout lub GridLayout że da mi linii granicznych poprzez XML?

nr

Jeśli nie, to będzie GridView dać mi wiersze chcę?

nr

Czy będę w stanie dodać wszystkie perviously wymienionych przedmiotów, które chcę GridView?

Tak, ale jak dobrze coś takiego jak Spinner zadziała, nie mogę powiedzieć.

Najprostszy sposób, aby uzyskać linie, których szukasz, to każda komórka z TableLayout lub GridLayout może być jakimś pojemnikiem zawierającym widget (y) dla tej komórki, gdzie podasz pojemnik tło, które jest twoją linią. A ShapeDrawable można zdefiniować w XML dla tego tła, które będzie ładnie skalowalne w oparciu o rzeczywiste wymagania komórki.

+0

Zajrzę do 'GridLayout' w połączeniu z tłem/ShapeDrawable, które wymieniłeś jako rozwiązanie. Dziękuję za informację! – TronicZomB

8

I był rzeczywiście w stanie osiągnąć pożądany wygląd poprzez ustawienie android:background="#000000" w widoku GridLayout a następnie w pozycji podrzędnych ustawić android:background="#8CDD81" (tylko niektóre kolor zielony) i połączone z android:layout_margin="2dp" udało mi się uzyskać „siatkę” linie, które chciałem. Podziękowania dla Commons za to, że skłonił mnie do myślenia w nowym kierunku, który stał się rozwiązaniem.

EDYCJA: To nie działa tak, jak oczekiwano. Potrzebujesz android:layout_alignLeft/Right, które są dostępne tylko przez RelativeLayout, aby uzyskać właściwą szerokość na elementach podrzędnych. Jeszcze tego nie przetestowałem, korzystając z tego pomysłu: child items w ciągu RelativeLayout w ciągu GridLayout.

+0

Dziękuję, że pomogłeś mi myśleć we właściwym kierunku. Udało mi się osiągnąć efekt "siatki", używając (w moim przypadku) 'LinearLayout's zagnieżdżonych w sobie z różnymi kolorami tła i marginesami. – ianthetechie