Android:3列布局,流体宽度为中间列

时间:2013-03-10 18:22:47

标签: android android-tablelayout

我有一个表格行,它是屏幕的整个宽度,它包含2个文本视图和一个按钮。 我最好将其显示为:

[Textview1] [Textview2] [按钮]

Textview1粘在左侧,Button按向右侧,Textview2填充剩余的可用空间。我一直在四处寻找,但找不到任何可以自动伸展以适合剩下的选项。

由于应用程序的性质,我必须自动添加这些表行及其内容,所以这就是我到目前为止所做的。

for( Program element :  sampleList)
{           
LayoutParams trLP = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
LayoutParams timeLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
LayoutParams titleLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
LayoutParams moreInfoLP = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);

//Table row to hold details
TableRow tr = new TableRow(this);
tr.setLayoutParams(trLP);

//Time
TextView time = new TextView(this);
time.setText(element.getTime());
timeLP.width=50;
timeLP.gravity=1;
time.setLayoutParams(timeLP);

//Title
TextView title = new TextView(this);
title.setText(element.getTitle());
title.setLayoutParams(titleLP);

//Button
moreInfo = new Button(this);
moreInfo.setText("More Info");

//Add to text views to table row
tr.addView(time);
tr.addView(title);
tr.addView(moreInfo);

holder.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));              
}

上面的工作,但显然没有显示,因为中间textview上的wrap_content,我知道我可以硬编码宽度,但非常想远离那个场景。我现在使用的代码是否正在尝试实现这一目标?

2 个答案:

答案 0 :(得分:3)

您可能想要试用LayoutParameters的weight属性。在您的情况下,将外部元素的权重设置为0,将中心元素的权重设置为1.这应该使中心元素占用尽可能多的空间。然而,重量属性有时有点奇怪。

另请查看this Q/A

答案 1 :(得分:0)

我会使用Mig Layout(http://www.miglayout.com/https://github.com/saynomoo/mig4android),因为它确实使这种事情变得更容易。我没想到,但是填充和增长限制看起来应该能够完成你需要的工作。