2012-02-15 154 views
0

enter image description hereAndroid:表格布局对齐

我想要'持续时间'和'成本'右对齐。我试过这段代码,但它不工作。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<com.markupartist.android.widget.ActionBar 
    android:id="@+id/actionBar" 
    style="@style/ActionBar" /> 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Date" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Couse Name" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:layout_gravity="right" 
      android:text="Duration" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:paddingRight="5dip" 
      android:layout_gravity="right" 
      android:text="Cost" /> 
    </TableRow>  
</TableLayout>  
</LinearLayout> 

layout_gravity =“right”not working。 我trird gravity =“ritght”,但那也不起作用。 我也希望每列都居中对齐。

回答

2

给权重表行所有文字浏览量...

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:layout_weight="1"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Date" android:layout_weight="1"/> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Couse Name" android:layout_weight="1"/> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:paddingLeft="5dip" 
      android:text="Duration" android:layout_weight="1"/> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:paddingLeft="5dip" 
      android:paddingRight="5dip" 
      android:text="Cost" android:layout_weight="1"/> 
    </TableRow> 
</TableLayout> 
+0

谢谢。 :) – SkyWalker 2012-02-15 06:20:12

+0

是的,当然! 我可以从代码设置TextView的重量吗? – SkyWalker 2012-02-15 06:34:37

+0

您可以使用LayoutParams – Sniper 2012-02-15 07:05:49

0

对于同一种布局,最好使用RelativeLayout

为什么要使用RelativeLayout?

只是因为我们可以设置使用下面的观点属性:

  1. 安卓layout_toRightOf
  2. 安卓layout_toLeftOf
  3. 安卓layout_alignParentRight
  4. 安卓layout_alignParentLeft
  5. 机器人:layout_below

以及RelativeLayout提供的更多属性来设置视图。

<RelativeLayout android:id="@+id/RelativeLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Date" 
      android:id="@+id/txtDate"/> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:text="Couse Name" 
      android:layout_toRightOf="@+id/txtDate" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:layout_gravity="right" 
      android:text="Duration" 
      android:layout_toLeftOf="@+id/txtCost" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:paddingRight="5dip" 
      android:layout_gravity="right" 
      android:text="Cost" 
      android:layout_alignParentRight="true" 
      android:id="@+id/txtCost" /> 

</RelativeLayout> 
+0

谢谢,但我想动态行从类文件添加到该表。所以,我不能使用相对布局。 – SkyWalker 2012-02-15 06:12:15

+0

@Hardik完全浪费时间.. **你有没有在questio的任何地方写过你希望以编程方式添加Views的代码?** – 2012-02-15 06:16:24

+0

不,引起我的第一个担心是设置布局。 – SkyWalker 2012-02-15 06:29:41

0

嘿,你可以使用相对布局,使您可以将您的文本视图任何地方你想...

下面

是一个示例代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" > 

    <TextView 
     android:id="@+id/usage" 
     android:layout_marginTop="220dip" 
     android:layout_marginLeft="45dip" 
     android:layout_marginRight="15dip" 
     android:typeface="serif"    
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" " 
     android:textColor="#030900"/> 

</RelativeLayout> 
+0

其实我想从类文件中添加动态行到表中,所以我不能使用相对布局 – SkyWalker 2012-02-15 06:11:19

1

线性布局很好...检查此.. `

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="Date" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="Couse Name" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:paddingLeft="5dip" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="Duration" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:paddingLeft="5dip" 
      android:paddingRight="5dip" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="Cost" /> 
    </TableRow> 
</TableLayout> 

`

改变每个layout_weight如你所愿..希望这会有所帮助..祝你好运......