2012-01-10 13 views
1

TableLayoutに3つの列を用意する必要があります。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); 

上記のコードには問題があります。 ファーストネーム、ラストネームなどのデータが一定の長さを超えると、列全体が画面外にシフトします。その場合、1つの列だけが画面に表示され、残りの列は画面を超えて表示されます。

特定の列のデータが長さを超えると、2行目に切り捨てられたり表示されたりするように、&他の列の位置は乱されないように、3列の固定列幅を設定します。 。

テキストが列幅を超える場合、テキストを切り捨てる必要がありますか、既にTextViewで使用可能なメソッドを使用して自動的に行うことができます。

ヒント/ご提案を歓迎します。

答えて

0

この問題を解決するには、textViewの幅を固定する必要があります。この目的のために体重を使うこともできます。

+0

LayoutParams layout = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT、20、(float)1.0);私は、TextView.setLayoutParams(レイアウト)を追加することで、つまりすべての列に同じ重みを与えながら表示の問題を起こすことによって、すべてのTextViewにレイアウトを設定しました。 – chiranjib

+1

LayoutParamsレイアウト= new LinearLayout.LayoutParams(0、LayoutParams.WRAP_CONTENT、(float)1.0); – jeet

0

この問題を解決するには、textview.setMaxLines(maxlines)およびtextview.setwidht()を使用できます。

関連する問題