Создать симметричную таблицу в Android - PullRequest
0 голосов
/ 25 января 2012

У меня возникли проблемы с TableLayout Android. Я хочу создать таблицу с симметричными строками / столбцами, то есть компоновкой, в которой каждый TextView в ней будет выделен точно такой же объем пространства, как и все остальные, независимо от того, какой текст был добавлен к нему.

Важно, что это можно сделать с помощью Java-кода, а не XML-файлов.

Было бы, вероятно, полезно знать, что для этого макета требуется, чтобы две таблицы находились рядом друг с другом, т. Е. Каждая таблица занимает всего 50% размера экрана. Я полагаю, это делает несколько LayoutParameter недоступными (например, FILL_PARENT)?

Вот что я пробовал:

for (String s : buffer) {
            TextView tv = new TextView(this);
            tv.setLayoutParams(new TableRow.LayoutParams(0x00, LayoutParams.WRAP_CONTENT, 1f));
            tv.append(s);       
            row.addView(tv, new TableRow.LayoutParams(LayoutParams.FILL_PARENT));   
        }   

Тем не менее выглядит плохо.

1 Ответ

2 голосов
/ 25 января 2012

Это создаст два столбца, которые совместно используют ширину упорядоченным образом.

<TableLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TableRow>
        <!-- Set the width to 0dp and set layout_weight=1! on both Views-->
        <TextView
            android:text="This is text1, its pretty long but that shouldn't be a problem"
            android:layout_marginLeft="1px"
            android:background="#ff0000"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />

        <TextView
            android:text="Shorter"
            android:background="#00ff00"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
    </TableRow>
</TableLayout>

Редактировать: То же самое, но теперь в коде:

    TableLayout layout = new TableLayout(this);
    TextView t1 = new TextView(this);
    t1.setBackgroundColor(Color.BLUE);
    t1.setText("This is text1, its pretty long but that shouldn't be a problem");
    TextView t2 = new TextView(this);
    t2.setBackgroundColor(Color.GRAY);
    t2.setText("Shorter");

    TableRow row = new TableRow(this);
    row.addView(t1, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f));
    row.addView(t2, new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f));

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