Как программно получить две разные ячейки таблицы, чтобы они имели одинаковую ширину в Android? - PullRequest
0 голосов
/ 18 августа 2011

У меня есть два виджета TableLayout, созданные программно в методе onCreate () моей Деятельности.

Table1:
SomeTextCell1  SomeReallyReallyLongTextCell2  SomeTextCell3

Table2:
SomeOtherTextCell1  ShortTextCell2  SomeOtherTextCell3

Таблица 1 отображается непосредственно над таблицей 2.

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

Table1:
SomeTextCell1       SomeReallyReallyLongTextCell2  SomeTextCell3

Table2:
SomeOtherTextCell1  ShortTextCell2                 SomeOtherTextCell3

Получение ширины в методе onCreate () этих виджетов TextView просто возвращает 0, что имеет смысл, поскольку пользовательский интерфейс еще ничего не выложил. Есть ли ловушка активности, которую я могу использовать после завершения макета, и myTextViewWidget.getWidth() вернет ненулевое значение?

1 Ответ

0 голосов
/ 21 сентября 2011

ОК, так что, наконец, решил этот. Этот ответ был ключом. По сути, вы присоединяете прослушиватель глобальной компоновки к интересующему представлению (в моем случае родительский объект для Table1 и Table2) и реализуете метод прослушивания onGlobalLayout (). Это вызывается один раз после завершения макета, позволяя работать getWidth () и getHeight (). Оставшаяся часть решения была простой (если немного уродливой), которая заключалась в определении максимальной ширины столбца между таблицами, а затем в цикле по строкам таблицы и установке максимальной ширины столбца. Работал шарм!

Отдельное спасибо kcoppock за отличное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...