TableLayoutクラスを拡張しようとしています。これにより、クラスによって自動的に行が移入されます。私が抱えている問題は、カスタムクラス内に追加する行が表示されないことです。TableLayoutクラスの拡張 - 行の追加
Ex。アクティビティ内:
private TextView getTableCell(String text) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
return tv;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DatasetTableLayout table = (DatasetTableLayout) findViewById(R.id.table);
TableRow tr = new TableRow(this);
tr.addView(getTableCell("activity1"));
tr.addView(getTableCell("activity2"));
tr.addView(getTableCell("activity3"));
table.addView(tr);
これで、テーブルに正常に行が追加されます。しかし、私のカスタムクラス内:
private TextView getTableCell(String text) {
TextView tv = new TextView(context);
tv.setText(text);
tv.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
return tv;
}
private void update() {
TableRow tr = new TableRow(context);
tr.addView(getTableCell("class1"));
tr.addView(getTableCell("class2"));
tr.addView(getTableCell("class3"));
addView(tr);
}
は成功した行を追加しません。 getChildCount()とgetChildAt()はこの行を返しますが、行が追加されますが、表示されません。
何か不足していますか?
私が発見しました問題。 DatasetTableLayout.getTableCell()(DatasetTableLayoutはTableLayoutを継承します)内で、新しいLayoutParams()を呼び出すとandroid.widget.TableLayout.LayoutParamsオブジェクトが作成されます。必要なものはandroid.widget.TableRow.LayoutParamsです。 教訓 - Eclipseの整理インポートコマンドに頼らないでください! – Adam
それは私の人生を救う。あなたはどんなlayoutparamでもテーブルレイアウトでは機能しませんが、talberow.layoutparam – Adem