实现TableRow时的对齐问题

时间:2012-01-10 07:08:57

标签: android

我需要在TableLayout中容纳三列。

以下代码创建表格行标题&然后填充列中的值。表格布局已在布局xml中定义。

TableLayout tableLay = (TableLayout) findViewById(R.id.table);

// Table Headers
TextView firstNameHeader = new TextView(this);
firstNameHeader.setGravity(Gravity.CENTER);
TextView lastNameHeader = new TextView(this);
lastNameHeader.setGravity(Gravity.CENTER);
TextView ageHeader = new TextView(this);
ageHeader.setGravity(Gravity.CENTER);


// Adding the Table headers to Table Row  
TableRow empHeaderTableRow = new TableRow(this);
empDetailsTableRow.addView(firstNameHeader);
empDetailsTableRow.addView(lastNameHeader);
empDetailsTableRow.addView(ageHeader);

// Adding the Table Row to Table Layout
tableLay.addView(empDetailsTableRow);

// Adding Column Data

for(int count = 0; count < empDetails.size ; count++){
TextView firstNameData = new TextView(this);
firstNameData.setGravity(Gravity.CENTER);
firstNameData.setText(...);
TextView lastNameData = new TextView(this);
lastNameData.setGravity(Gravity.CENTER);
lastNameData.setText(...);
TextView ageData = new TextView(this);
ageData.setText(...);
ageData.setGravity(Gravity.CENTER);

TableRow empDataTableRow = new TableRow(this);
empDataTableRow.addView(firstNameData);
empDataTableRow.addView(lastNameData);
empDataTableRow.addView(ageData);
}

// Adding the Table Row to Table Layout
tableLay.addView(empDataTableRow);

上述代码存在对齐问题。 当任何数据(如名字,姓氏)超过一定长度时,整个列将移出屏幕。在这种情况下,屏幕上只能显示一列,而其余列则超出屏幕。

我想为三列设置固定的列宽,这样如果任何特定列的数据超过长度,它将被截断或显示在第二行&amp;其他列位置(对齐)不受干扰。

如果文本超出列宽,是否需要截断文本,或者可以使用TextView中现有的任何方法自动完成。

欢迎任何提示/建议。

3 个答案:

答案 0 :(得分:0)

您需要设置要修复的textView的宽度才能解决此问题。您也可以使用重量来达到此目的。

答案 1 :(得分:0)

使用android:shrinkColumnsandroid:stretchColumns xml-attributes。

答案 2 :(得分:0)

您可以使用textview.setMaxLines(maxlines)和textview.setwidht()来解决此问题。