2011-08-03 87 views
0

我想显示列表视图上的航班列表。我想让他们全部对齐。我使用了一个带有重力和填充的LinearLayout。但是我想减少第四栏的空间,所以我可以做更大的文字大小。我试图将此元素的layout_weight设置为0,其余所有元素都设置为1.但它不起作用。到目前为止,我有这个使用layout_weight参数在不同行中对齐文本浏览

Table of flight boards

任何想法?

+0

仅限于ListView吗?因为这里是一个TableLayout的东西.. –

+0

我没有问题使用anoother布局,但TableLayout会给我相同的结果,不会是? – Dayerman

回答

1

如果你要使用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

执行包含以下

LinearLayoutLL1第4列

LinearLayoutLL2含最后一列

RelativeLayoutRL包含LL1LL2

现在,您可以定位LL2向右的继续ainer

EDITED

+0

但是,然后一行不会对齐到以下一个。 – Dayerman

+0

我编辑了答案 - 抱歉 –

相关问题