TableLayout — встроенные TextView и ImageView

Я создал приложение, которое динамически добавляет TextViews и ImageViews в TableLayout. Я столкнулся с одной небольшой проблемой: я не могу заставить ImageView отображаться вместе с полями TextView. В моем фрагменте я получаю результаты с сервера и отображаю их в макете.

Я пробовал несколько способов, таких как установка гравитации TextView в центр по вертикали, как это
Я пытался ограничить ширину текстовых полей, но это не сработает.

    firstRow.setGravity(Gravity.CENTER_VERTICAL);

Вот как заполняются мои строки:

    businessNameRow.addView(businessNameField);

Я добавляю наборы динамически, каждый набор состоит из 7 строк TextView и 1 ImageView в каждой строке следующим образом:

TableRow firstRow = new TableRow(getActivity().getApplicationContext());
TableRow secondRow = new TableRow(getActivity().getApplicationContext());
TableRow thirdRow = new TableRow(getActivity().getApplicationContext());
TableRow fourthRow = new TableRow(getActivity().getApplicationContext());
TableRow fifthRow = new TableRow(getActivity().getApplicationContext());
TableRow sixthRow = new TableRow(getActivity().getApplicationContext());
TableRow imageRow = new TableRow(getActivity().getApplicationContext());
TableRow seventhRow = new TableRow(getActivity().getApplicationContext());

Затем я просто добавляю строку в таблицу

final TableLayout tl = (TableLayout)root.findViewById(R.id.tableResultsGPS);

tl.addView(firstRow); //And so on

Мой TableLayout помещается в ScrollView, поэтому я могу прокручивать список результатов.

Прикрепляю изображение того, чего я хочу добиться и как это выглядит сейчас. введите здесь описание изображения


person Mac    schedule 18.04.2016    source источник
comment
Вы можете показать изображение того, что вы получаете сейчас   -  person sihao    schedule 18.04.2016
comment
Прикрепил к основному сообщению. Это то, что я получаю.   -  person Mac    schedule 18.04.2016
comment
Можете ли вы поделиться кодом, в котором вы устанавливаете правила макета для изображения и текста в каждой строке?   -  person Swayam    schedule 18.04.2016
comment
примите во внимание мой ответ, я думаю, что с ним намного проще добиться, и он предлагает гораздо больше гибкости   -  person sihao    schedule 18.04.2016
comment
В XML-файле? Потому что я удалил все параметры макета, чтобы сохранить код в чистоте, поскольку я не мог понять, что делать.   -  person Mac    schedule 18.04.2016
comment
будет хорошо, если вы сможете использовать @sihao, чтобы уведомить меня, я получу уведомление о вашем обновлении   -  person sihao    schedule 19.04.2016
comment
вы посмотрите учебник по просмотру списка в моем ответе. Оттуда попробуйте представить свое решение в форме ListView. Попробуйте связать это. Дайте мне знать, если вы все еще застряли   -  person sihao    schedule 19.04.2016
comment
@sihao В настоящее время я работаю над решением, используя ваш способ, буду держать вас в курсе. Спасибо   -  person Mac    schedule 20.04.2016
comment
Замечательно! listview действительно полезен для многих приложений   -  person sihao    schedule 20.04.2016


Ответы (1)


Похоже, то, чего вы пытаетесь достичь, больше подходит для ListView реализация.

Общая идея:

  • Создайте элемент списка с макетом отдельного элемента (ваш текст и изображение)
  • Создайте новый класс, который моделирует каждый ваш элемент
  • Используя представление списка, привяжите данные к ListView.

Есть много руководств. Попробуйте это

Боковое примечание. Хорошим предложением по выбору макета будет относительный макет для вашего элемента ListView. Один из моих личных фаворитов из-за его гибкости.

person sihao    schedule 18.04.2016