Android表格布局格式化问题

when the text cell is large ,尽pipe文本inside the cell ,但无法使TableLayout适合屏幕inside the cell

这是我的TableLayout。 一个简单的两行,两列表。 左列单元格是multiline 。 如果其中一个单元格的文本足够大,可以分成两行,则该列将被拉伸以填充整个屏幕,并且右列将被推出屏幕。

为什么? 我如何强制整个桌子留在屏幕内? 任何暗示都欢迎。

我的TableLayout如下:

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow> <TextView android:text="Account 4 with a very large name to see if it breaks on two or more lines" android:singleLine="false" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView> <TextView android:text="$400.00" android:gravity="right" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView> </TableRow> <TableRow> <TextView android:text="Account 5" android:singleLine="false" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView> <TextView android:text="$400.00" android:gravity="right" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView> </TableRow> </TableLayout> 

显示布局的代码是基本的:

 public class AccountBrowserTest extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.accountbrowser_test); } } 

Solutions Collecting From Web of "Android表格布局格式化问题"

将android: stretchColumnsandroid:shrinkColumnsTableLayout元素中:

 <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" android:shrinkColumns="1"> 

1值是您希望发生更改的列。 你可以指定更多像这样的一个值:

 android:stretchColumns="0,1" 

或者如果你想要改变发生在你所有的列上,像这样:

 android:stretchColumns="*" 

请看这里的详细信息: http : //android-pro.blogspot.com/2010/02/table-layout.html

我有我的应用程序相同的问题,并find以下解决scheme:

 <TableLayout android:shrinkColumns="0" android:stretchColumns="1" android:layout_width="match_parent" android:layout_height="wrap_content"> </TableLayout> 

这与2列工作正常。

我有同样的问题,并通过添加解决它

 android:stretchColumns="0" 

到TableLayout元素和设置

 android:layout_width="0dp" 

在TextView上太长了。

在表格布局中使用shrinkColumns属性来为你想让它们缩小以适合的列

最简单的方法是:

 <TableLayout android:shrinkColumns="*"/> 

缩小所有列,或者你可以写,而不是“*”,你想缩小的列索引,在你的情况是

 <TableLayout android:shrinkColumns="0,1"/> 

注意列索引从零开始,所以最新的代码允许第一个(索引= 0)和第二个(索引= 1)列缩小。

有临时修复,做:

  android:stretchColumns = " (number of actual col) - 1 " 

这里没有解决办法在我的情况。

免责声明:我的布局不太好,所以我只是玩了一些价值观,而且这似乎有效(尽pipe我不能给你一个很好的解释):

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <TextView android:text="Account 4 with a very large name to see if it breaks on two or more lines" android:singleLine="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <TextView android:text="$400.00" android:gravity="right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.001" /> </TableRow> <TableRow> <TextView android:text="Account 5" android:singleLine="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <TextView android:text="$400.00" android:gravity="right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.001" /> </TableRow> </TableLayout> 

另外请注意,我没有在Activity中试过这个布局,我只是在xml编辑器的布局视图中查看它,但是至less在那里看起来很好。

您也可以尝试在TableLayout中操作stretchColumns和/或shrinkColumns。

这可能与你的多行单元格宽度的wrap_content有关。

你可以尝试一些给它一个更明确的宽度的方法…即,将width to 0设置width to 0 ,并给所有单元layout_gravity = 1 。 这应该会导致每个列占用相等数量的宽度(或者您可以调整,如果你想有一个比另一个更重)。

希望这个代码将帮助你..公共类MainActivity延伸活动{

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 

  <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:singleLine="false" android:text="Account 4 with a very large \n name to see if it breaks \n on two or more lines" > </TextView> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="$400.00" > </TextView> </TableRow>