Как заставить строку расширяться на всю ширину таблицы в Android

Я следовал примеру на https://stackoverflow.com/a/7123217/2884981, но, к сожалению, строка не расширяется для полной ширины таблицы (посмотрите, как черная «граница»/фон настолько велика справа, в то время как везде она имеет ширину всего 1 пиксель).

Я хочу, чтобы второй столбец расширялся, чтобы он занимал все доступное пространство справа.

Граница слишком большая

Вот код, который я использую. Пожалуйста, если кто-нибудь знает, как я могу сделать эту правильную «границу» равной 1px вместо того, чтобы она выглядела так ужасно, дайте мне знать.

        for (int i = 0; i < tasks.size(); i++)
    {
        TaskDetail taskDetail = tasks.get(i);

        TableRow row = new TableRow(this);

        // Set the background/border colour to black
        row.setBackgroundColor(Color.BLACK);
        row.setPadding(1, 1, 1, 1);

        TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

        layoutParams.setMargins(0,0,1,0);

        LinearLayout detailCell = new LinearLayout(this);
        detailCell.setBackgroundColor(Color.parseColor("#FFE6F0"));
        detailCell.setLayoutParams(layoutParams);

        LinearLayout valueCell = new LinearLayout(this);
        valueCell.setBackgroundColor(Color.WHITE);
        valueCell.setLayoutParams(layoutParams);    

        TextView detailName = new TextView(this);
        detailName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        detailName.setText(taskDetail.getName());
        detailName.setPadding(5, 10, 5, 5);
        detailName.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        TextView valueName = new TextView(this);
        valueName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        valueName.setText(taskDetail.getValue());
        valueName.setPadding(5, 10, 5, 5);
        valueName.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        detailCell.addView(detailName);
        valueCell.addView(valueName);

        // Add to the screen layout
        row.addView(detailCell);
        row.addView(valueCell);

        table.addView(row);
    }

person b85411    schedule 06.11.2013    source источник
comment
Перейдите по этой ссылке: stackoverflow.com/questions/9719380/   -  person Pihu    schedule 06.11.2013


Ответы (1)


Установите weight равным 1.0f для каждого столбца в строке следующим образом:

TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);

Просто внесите изменения следующим образом:

...
...

row.setPadding(1, 1, 1, 1);

TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
layoutParams.setMargins(0,0,1,0);

LinearLayout detailCell = new LinearLayout(this);

...
...
person Amulya Khare    schedule 06.11.2013
comment
Если кому-то еще интересно, я нашел еще один способ сделать это, добавив detailName.setWidth(0); и valueName.setWidth(0); а также table.setStretchAllColumns(true); Делая это, вы можете программно настроить макет таблицы так, чтобы столбцы имели одинаковую ширину. - person b85411; 06.11.2013