Добавление TextViews в TableLayout "наращиваемый" - PullRequest
1 голос
/ 28 июля 2010

Хорошо, моя проблема в том, что у меня есть n-TextViews, и они будут добавлены программно в TableLayout. Совершенно неважно, как я стилизую эти TextViews или TableLayout, каждый раз, когда я что-то добавляю, он добавляет TextView внизу после других TextView. Эти представления имеют переменную ширину, которая рассчитывается по длине текста и некоторым пикселям (WRAP_CONTENT только что сделал ширину 100% ...).

It is like this right now:
------------------------------------------
[TextView 1]
[TextView 2]
[TextView 3]
[TextView 4]
------------------------------------------

And it should be like:
------------------------------------------
[TextView 1] [TextView 2] [TextView 3]
[TextView 4]
------------------------------------------

На самом деле мне не нужен TableLayout. Я все еще могу изменить это как угодно. Конечно, было бы еще лучше, если бы эти TextViews могли получить WRAP_CONTENT как ширину.

EDIT: Btw. a LinearLayout with direction = "horizontal" добавляет TextViews в первый раз, но в конце он не переносится на следующую строку, он просто добавляет их в правую часть и будет разделен, как:

------------------------------------------
[TextView 1] [TextView 2] [TextView 3] [Te
                                       [xt
                                       Vie
                                       w 4
                                       ]
------------------------------------------

Ответы [ 2 ]

0 голосов
/ 28 июля 2010

Я думаю, вы могли бы попробовать что-то вроде этого:
- Поставьте TableLayout в качестве корня вашего Activity, с FILL_PARENT в качестве ширины и высоты.
- Затем получите его ширину и сохраните впеременная (mWidth).
- вы создаете TableRow, добавляете первый TextView и сохраняете его ширину в переменной (mTotalWidth) и помещаете TextView в строку.
- КогдаВы хотите добавить новый Textview, создать его, получить его ширину и вычислить сумму при добавлении его в mTotalWidth.
Теперь
if mTotalWidth TextView втекущая строка и приращение mTotalWidth
else вы создаете новый TableRow, вставляете в него Textview и меняете значение mTotalWidth на ширину этого TextView.
Затем вы можете повторить этодля всех ваших взглядов.Это может показаться немного грязным, но я думаю, что это может сработать.

0 голосов
/ 28 июля 2010

Возможно, вы захотите использовать GridView для того, что вы пытаетесь сделать.Я не верю, что есть какие-либо классы Layout, которые поддерживают то, что вы хотите сделать.

Если вы выберете GridView, вы сможете использовать ArrayAdapter, так как он ужеподдерживает простое создание TextView.

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

...