Выровнять текстовые представления в разных строках с помощью параметра layout_weight - PullRequest
0 голосов
/ 03 августа 2011

Я хочу показать список рейсов в списке.И я хочу, чтобы они все выровнялись.Я использовал LinearLayout с гравитацией и заполнением.Но я хочу уменьшить пространство для 4-го столбца, чтобы потом увеличить размер текста.Я попытался установить layout_weight этого элемента в 0, а все остальные в 1. Но это не работает.Пока у меня есть это

Table of flight boards

Есть идеи?

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Если вы собираетесь использовать ListView со списком LinearLayout представлений (я бы пошел со списком TableRow, помещенным в TableLayout), тогда я бы предложил предварительно задать ширину каждого столбца в процентах от общего пространства (т. е. сколько экрана вы бы позволили колонке выделить). Что-то среди строк:

// basically you build your adapter here
LinearLayout.LayoutParams wrapWrapLinearLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int[] columnWidths = new int[]{20, 20, 20, 20, 20};

ArrayList<LinearLayout> tableRows = new ArrayList<LinearLayout>();//this is the adapter
LinearLayout row = new LinearLayout(this);
//add a header
row.setLayoutParams(wrapWrapLinearLayoutParams);
row.setGravity(Gravity.CENTER);
row.setBackgroundColor(headerColor);
row.addView(makeTableRowWithText(headerForCol1, columnWidths[0]));
row.addView(makeTableRowWithText(headerForCol2, columnWidths[1]));
row.addView(makeTableRowWithText(headerForCol3, columnWidths[2]));
row.addView(makeTableRowWithText(headerForCol4, columnWidths[3]));
row.addView(makeTableRowWithText(headerForCol5, columnWidths[4]));
tableRows.add(row);
for(int i = 0; i < numberOfItemsInTheFlightsTable; i++) {
    row = new LinearLayout(this);
    row.setLayoutParams(wrapWrapLinearLayoutParams);
    row.setGravity(Gravity.CENTER);
    row.addView(makeTableRowWithText(col1Text, columnWidths[0]));
    row.addView(makeTableRowWithText(col2Text, columnWidths[1]));
    row.addView(makeTableRowWithText(col3Text, columnWidths[2]));
    row.addView(makeTableRowWithText(col4Text, columnWidths[3]));
    row.addView(makeTableRowWithText(col5Text, columnWidths[4]));
    tableRows.add(row);
}

//util method
private TextView recyclableTextView;

public TextView makeTableRowWithText(String text, int widthInPercentOfScreenWidth) {
    int screenWidth = getResources().getDisplayMetrics().widthPixels;
    recyclableTextView = new TextView(this);
    recyclableTextView.setText(text);
    recyclableTextView.setTextColor(Color.BLACK);
    recyclableTextView.setTextSize(20);
    recyclableTextView.setWidth(widthInPercentOfScreenWidth * screenWidth / 100);
    return recyclableTextView;
}

Я имею в виду, уловка в том, что вы заранее определяете процент экрана, выделенного для каждого столбца.

0 голосов
/ 03 августа 2011

Выполните следующие действия

LinearLayout LL1, содержащие первые 4 столбца

LinearLayout LL2, содержащие последний столбец

RelativeLayout RL содержит LL1 и LL2

Теперь вы можете поместить LL2 справа от контейнера

EDITED

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