我无法让我的TableLayout适合屏幕when the text cell is large
,尽管文字包裹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);
}
}
答案 0 :(得分:34)
将android:stretchColumns
和android:shrinkColumns
添加到TableLayout
元素:
<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
答案 1 :(得分:8)
我的应用程序遇到了同样的问题,并找到了以下解决方案:
<TableLayout
android:shrinkColumns="0"
android:stretchColumns="1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TableLayout>
这适用于2列。
答案 2 :(得分:6)
我遇到了同样的问题并通过添加
解决了这个问题android:stretchColumns="0"
到TableLayout元素并设置
android:layout_width="0dp"
在TextView上太长了。
答案 3 :(得分:5)
在表格布局中,对于希望允许缩小以适合
的列,使用shrinkColumns属性 最简单的方法是:<TableLayout
android:shrinkColumns="*"/>
缩小所有列,或者您可以编写而不是“*”,要缩小的列索引,在您的情况下将是
<TableLayout
android:shrinkColumns="0,1"/>
请注意,列索引从零开始,因此最新代码允许第一个(index = 0)和第二个(index = 1)列缩小。
答案 4 :(得分:1)
有临时修复,请执行:
android:stretchColumns = " (number of actual col) - 1 "
这里没有解决方案。
答案 5 :(得分:0)
对于多线单元格的宽度,可能与wrap_content
有关。
您可以尝试一些方法为其提供更明确的宽度...即设置width to 0
,并为所有单元格提供layout_gravity = 1
。这应该导致每个列占据相同的宽度(或者你可以调整,如果你想要一个比另一个更多的重量)。
答案 6 :(得分:0)
免责声明:我对布局并不是很擅长,所以我只玩了一些有价值的东西,这似乎有效(我不能给你一个很好的解释原因):
<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编辑器的layout-view中查看过它,但它至少看起来很好。
答案 7 :(得分:0)
您还可以尝试在TableLayout中操作stretchColumns和/或shrinkColumns。
答案 8 :(得分:0)
希望这段代码可以帮到你.. 公共类MainActivity扩展了Activity {
@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>
答案 9 :(得分:0)
您需要很好地处理布局权重的组合。检查下面的示例。使用 layout_weight=1 和 layout_width=0dp 时,行中的所有视图都应该获得相同的宽度。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*"
android:stretchColumns="*">
<TableRow
android:id="@+id/basicKeypadRow1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="T">
</TextView>
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="R">
</TextView>
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="Y">
</TextView>
</TableRow>
<TableRow
android:id="@+id/basicKeypadRow1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="R">
</TextView>
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="O">
</TextView>
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="W">
</TextView>
</TableRow>