如何在ScrollView for android中创建TableLayout中心

时间:2017-10-05 07:48:34

标签: java android android-tablelayout

我正试图在ScrollView的中心显示表格,但它没有用。但如果我删除<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_rekod" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.asiqin.attendance.Rekod" android:background="#E9F1F2"> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@+id/button2"> <TableLayout android:id="@+id/table" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginTop="10dp" android:layout_centerHorizontal="true" android:shrinkColumns="1" android:divider="?android:attr/dividerHorizontal" android:showDividers="middle"> </TableLayout> </ScrollView> </RelativeLayout> ,表格将显示在中心。我不知道哪个部分是我的错误。任何人都可以帮忙找到错误吗?

这是xml编码:

  TableRow rowHeader = new TableRow(context);
    rowHeader.setBackgroundColor(Color.parseColor("#c0c0c0"));
    rowHeader.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,TableLayout.LayoutParams.MATCH_PARENT));
    String[] headertext = {"TARIKH","ALASAN","STATUS"};
    for(String c:headertext){
        TextView tv = new TextView(this);
        tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.MATCH_PARENT));
        tv.setGravity(Gravity.CENTER);
        tv.setTextSize(15);
        tv.setPadding(5,5,5,5);
        tv.setText(c);
       // tv.setBackgroundDrawable(border1);
        tv.setBackgroundResource(R.drawable.valuecellborder);
        rowHeader.addView(tv);
    }

这是java代码:

NumPy

enter image description here

1 个答案:

答案 0 :(得分:2)

有两种方法可以实现您想要实现的目标

1)在scrollview

中使用相对布局
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/button2">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>
<TableLayout
    android:id="@+id/table"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginTop="10dp"
    android:layout_centerHorizontal="true"
    android:shrinkColumns="1"
    android:divider="?android:attr/dividerHorizontal"
    android:showDividers="middle">

</TableLayout>
</RelativeLayout>
</ScrollView>

2)使用android:layout_gravity =&#34; center&#34;在表格布局中

<TableLayout
android:id="@+id/table"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:shrinkColumns="1"
android:divider="?android:attr/dividerHorizontal"
android:layout_gravity="center"
android:showDividers="middle">

你的代码的问题是你正在使用android:layout_centerHorizo​​ntal =&#34; true&#34;当父布局是相对布局时,它可以工作,但如果父布局是ScrollView,它将无法工作。