2017-10-05 26 views
0

我想显示在ScrollView中心的表,但它没有工作。但如果我删除ScrollView,表格将显示在中心。我不知道哪个部分是我的错误。任何人都可以帮助找到错误?如何使TableLayout在ScrollView的中心为Android

这是XML编码:

<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> 

这是java代码:

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); 
    } 

enter image description here

回答

1

有些情况下,你可以实现你想达到什么样的两种方法

1)使用滚动视图内的相对布局

<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 = “中心”

<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 = “真”,它的工作原理父布局时是相对布局,但如果父布局是ScrollView,则它不起作用。

+0

感谢ANUJ GUPTA,您的第一个解决方案对我来说效果很好。 – NAA

相关问题