Определение номера столбцов программно в TableLayout

У меня есть расположение XML, которое содержит TableLayout с неизвестным числом TableRows... Количество строк будет установлено durin время выполнения, что я действительно знаю, хотя то, что я хочу два столбца... Таким образом, у меня есть несколько вопросов относительно этого:

    - существует ли способ установить целый TableLayout, чтобы иметь 2 столбца?

- существует ли путь программно для предоставления идентификатора (во время времени выполнения), создал TableRows, который будет размещен в TableLayout, таким образом, я смогу сослаться на них позже от других частей программного обеспечения?

6
задан TiGer 28 April 2010 в 13:48
поделиться

1 ответ

Вы можете создать свой строки таблицы через части XML и LayoutInflater. Скажем, у вас это было в таблице table_cell.xml:

<TextView android:id="@+id/text"
    android:text="woot" />

И это как ваш table_row.xml (если вы не делаете что-то необычное с TableRow, вам может не понадобиться помещать его в собственный XML-файл, а вместо этого просто создать его программно. Результат будет таким же ):

<TableRow />

Предполагая, что ссылка на TableLayout называется «table», вы можете сделать что-то вроде этого:

TableLayout table = (TableLayout)findViewById(R.id.table);
LayoutInflater inflater = getLayoutInflater();

for(int i = 0; i < 5; i++) {
    TableRow row = (TableRow)inflater.inflate(R.layout.table_row, table, false);
    View v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);
    v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);

    // you can store your reference to `row` here for later use
    table.addView(row);
}

С помощью этой техники вы все равно можете настроить свой макет в XML, что упростит чтение / организацию / редактирование и у вас по-прежнему есть программный контроль над количеством столбцов и строк в таблице. Вы также можете сохранить ссылки на каждую строку таблицы для дальнейшего использования.

5
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: