我正在尝试使用从DB获取的值将表行添加到表布局中。因此,表行将动态添加。 我想要一个漂亮的布局,有2列,每个中心的文字对齐。我正在使用下面的代码。但它不起作用。任何人都可以帮忙。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/display_table" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="1dp"
>
<TextView android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center"
android:text=""/>
<TextView android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium" android:text=""
android:gravity="center"/>
</TableRow>
</TableLayout>
我将这些行添加到布局中,如下所示。
private void addHeaderRow(TableLayout tl){
TableRow tr = new TableRow(this);
tr.setPadding(1, 1, 1, 1);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
/* Create a Button to be the row-content. */
TextView text1 = new TextView(this);
TextView text2 = new TextView(this);
text1.setText(in.toUpperCase());
text2.setText(out.toUpperCase());
text1.setGravity(Gravity.LEFT);
text2.setGravity(Gravity.CENTER);
tr.addView(text1);
tr.addView(text2);
/* Add row to TableLayout. */
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
答案 0 :(得分:1)
试试这个......
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/display_table" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="1dp"
>
<TextView android:layout_width="150dp"
android:layout_height="wrap_content"
android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center"
android:text=""/>
<TextView
android:layout_width="160dp"
android:layout_height="wrap_content"
android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text=""
android:gravity="center"/>
</TableRow>
</TableLayout>
指定文本视图的布局宽度和高度属性
答案 1 :(得分:1)
将表格布局放在Scroll View中,因为您不知道要显示的行数。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/display_table" >
</TableLayout>
</ScrollView>
现在你的java代码:
class SomeTableLayout extends Activity{
private TableLayout tableLayout = null;
private TableLayout.LayoutParams params= null;
void onCreate(){
tableLayout = (TableLayout)findViewById(R.id.display_table);
addHeaderRow();
}
private void addHeaderRow(){
tableLayout.removeAllViews();
for(int i = 0; i < cursor.length(); i++){
TableRow tr = new TableRow(this);
tr.setPadding(1, 1, 1, 1);
tr.setId(i + 1);
tr.setOnclickLinstener(new onClickListener(){
// do some datanse operation on click of row.
});
params = new TableLayout.LayoutParams(TableLayout.LayoutParams.fillParent,
TableLayout.LayoutParams.wrapContent);
/* Create a Button to be the row-content. */
TextView text1 = new TextView(this);
TextView text2 = new TextView(this);
text1.setText(in.toUpperCase());
text2.setText(out.toUpperCase());
text1.setGravity(Gravity.LEFT);
text2.setGravity(Gravity.CENTER);
tr.addView(text1);
tr.addView(text2);
/* Add row to TableLayout. */
tl.addView(tr);
}
}
}