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

  • 获取所有TableRow的TableLayout
  • 我怎样才能得到一个Android TableLayout填充横向模式的父母?
  • Android TableLayout宽度
  • 在Android应用程序中添加带有边框的dynamicTableLayout
  • Android表格布局格式化问题
  • 与圆形边界的Android表
  • 在android中以编程方式添加文本到图像
  • 如何在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>