2012-01-10 53 views
1

我需要在TableLayout中容纳三列。执行TableRow时的对齐问题

以下代码创建表格行标题&然后填充列中的值。表格布局已在布局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); 

上述代码存在对齐问题。 当名字,姓氏等数据超过一定长度时,整个柱状物移出屏幕。在这种情况下,只有一列在屏幕上可见,而其余列在屏幕之外。

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

如果文本超过列宽,是否需要截断文本,或者可以在TextView中已有的任何方法的帮助下自动完成。

欢迎任何提示/建议。

回答

0

您需要设置textView的宽度才能解决此问题。您也可以将重量用于此目的。

+0

LayoutParams layout = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,20,(float)1.0);我通过添加textView.setLayoutParams(布局)将布局设置为每个TextView,即通过为所有列提供相同的权重,但存在显示问题。 – chiranjib 2012-01-10 07:53:16

+1

LayoutParams layout = new LinearLayout.LayoutParams(0,LayoutParams.WRAP_CONTENT,(float)1.0); – jeet 2012-01-10 07:57:23

0

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