9

Я пытаюсь создать таблицу/сетку для некоторых элементов в своем приложении, и я хотел бы иметь границу вокруг каждой ячейки, чтобы разделить элементы и иметь согласованную связь с этим элементом. Это приложение будет использоваться в промышленных условиях, где могут быть люди, незнакомые с Android, которые должны использовать это, пытаясь сделать это как можно проще.Пограничные линии для ячеек в GridLayout, TableLayout или GridView?

В таблице/сетка будет содержать TextView, EditText, Spinner и Button, а также будет прокручивать (через ScrollView родителя).

Я прочитал о GridView и обнаружил, что он (кажется) только сможет получить элементы программно, пожалуйста, исправьте меня, если я ошибаюсь. Я чувствовал, что это не нужно, поскольку я знаю, какие предметы я хочу и где. Кроме того, я не пробовал добавлять элементы в макет программно, но я решил, что сначала попробую другие варианты. Кроме того, GridView documentation не говорит так или иначе, если автоматически отображаются линии границы, или если вы можете показать их вообще.

Я начал с TableLayout и смог получить все, кроме границ, чтобы работать. Я попробовал android:divider, чтобы получить линии, но это не сработало. Мне показалось, что я должен создать кучу TextView s с черным фоном и шириной/высотой ~ 2dp, чтобы создать свои собственные пограничные линии. Однако это похоже на огромные отходы. Затем я также прочитал TableLayout documentation и нашел следующее: «Контейнеры TableLayout не отображают граничные строки для своих строк, столбцов или ячеек».

Я затем пробовал GridLayout и имел те же результаты, что и TableLayout. Я пробовал padding и margins, не работал. Кроме того, в GridLayout documentation указано: «Сетка состоит из множества бесконечно тонких линий, которые разделяют область просмотра на ячейки».

Мои вопросы:

  1. Есть ли attirbute, что я пропустил в TableLayout или GridLayout, что даст мне пограничные линии через XML?

  2. Если нет, тогда будет GridView дайте мне строки, которые я хочу?

  3. Смогу ли я добавить все предметы, упомянутые выше, я хочу GridView?

ответ

5

Есть ли attirbute, что я пропустил в TableLayout или GridLayout что даст мне пограничные линии через XML?

No.

Если нет, то будет ли GridView дать мне строки, которые я хочу?

No.

Смогу ли я, чтобы добавить все perviously упомянутые пункты, которые я хочу в GridView?

Да, хотя, как хорошо, что-то вроде Spinner будет работать, я не могу сказать.

Простейший путь, с верхней части головы, чтобы дать вам линии, которые вы ищете, чтобы каждая ячейка TableLayout или GridLayout была контейнером, содержащим виджет (ы) для этой ячейки, где вы указываете контейнер фон, который является вашей линией. A ShapeDrawable может быть определен в XML для этого фона, который будет красиво изменяться по фактическим требованиям ячейки.

+0

Я рассмотрю «GridLayout» в сочетании с фоном/ShapeDrawable, который вы упомянули в качестве решения. Благодарю вас за информацию! – TronicZomB

8

я был фактически в состоянии достичь желаемого вида, установив android:background="#000000" в GridLayout зрения, а затем в дочерних элементах я поставил android:background="#8CDD81" (только некоторые зеленый цвет) и в сочетании с android:layout_margin="2dp" я смог получить «сетку» линий, которые я хотел. Благодаря CommonsWare, хотя для того, чтобы заставить меня думать в новом направлении, которое превратилось в решение.

EDIT: Это не работает так, как ожидалось. Вам нужны android:layout_alignLeft/Right, которые доступны только через RelativeLayout, чтобы получить только правильную ширину для дочерних элементов. Не тестировали это, используя эту идею, child items в пределах RelativeLayout в пределах GridLayout.

+0

Спасибо, что заставил меня думать в правильном направлении. Я смог выполнить эффект «сетки», используя (в моем случае) 'LinearLayout', вложенные друг в друга с разными цветами фона и полями. – ianthetechie

Смежные вопросы