2012-04-18 47 views
0

我是Android开发新手,所以如果这是一个noob问题,请原谅我!我试图显示一个包含2列的表。第二列应该右对齐,但可以是固定宽度。第一列应该伸展以填充任何剩余的空间。我有一个非常简单的表格布局,但它将第二列的文本从屏幕边缘推出,因此您无法阅读它。Android:为什么我的列标题被推离屏幕边缘?

这里是布局的XML:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tbl_my_tanks" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="0"> 

    <TableRow android:padding="3dip"> 
     <TextView 
      android:id="@+id/col_tank_name" 
      android:text="@string/tanks_tank_name" /> 

     <TextView 
      android:id="@+id/col_stock_level" 
      android:gravity="right" 
      android:text="@string/tanks_stock_level" /> 

    </TableRow> 

</TableLayout> 

...这是个什么样子,当我运行它,如:

Text disappears off right hand edge of screen in Android

我怎样才能得到它对齐正确吗? (我尝试使用android:layout_gravity =“right”,但这没有什么区别)。

回答

2

如果您从表格行中删除填充,应该没问题。请尝试使用保证金。

+0

谢谢,删除填充确实会阻止它溢出。虽然没有android:margin属性,并且android:layout_margin再次导致溢出问题。所以我仍然无法找到任何让它使用一点填充的方法。尽管如此,没有填充比溢出更好,所以我可以忍受它。 – Russ 2012-04-18 16:07:40

0

根据api文档,tablerow应该总是一个tablelayout的孩子,也许这就是为什么它表现时髦?

+0

有一个tablelayout--我粘贴了整个xml,但是stackoverflow似乎已经删除了一些!或者我可能意外删除了它 - 我会尝试编辑该问题以纠正。 – Russ 2012-04-18 15:48:38

+0

填充单位'dip'应该是'dpi'?可能不是原因,但如果在xml中存在拼写错误,则可能需要修复它... – 2012-04-18 16:09:35

+0

此刻,我无法想出任何其他原因,因为这不起作用,原因是父项在屏幕边界之外延伸...可能想检查... – 2012-04-18 16:15:24

0

我有同样的问题。 有时它固定,通过增加尺寸相同右缘至行的最后一列补偿剪辑:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tbl_my_tanks" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="0"> 
    <TableRow android:padding="3dip"> 
     <TextView 
      android:id="@+id/col_tank_name" 
      android:text="@string/tanks_tank_name" /> 
     <TextView 
      android:id="@+id/col_stock_level" 
      android:gravity="right" 
      android:layout_marginRight="3dip" 
      android:text="@string/tanks_stock_level" /> 

    </TableRow> 
</TableLayout> 

如果仍然裁剪,然后只需添加行填充边距上的每一列行。