我有一个表格行,它是屏幕的整个宽度,它包含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,我知道我可以硬编码宽度,但非常想远离那个场景。我现在使用的代码是否正在尝试实现这一目标?
答案 0 :(得分:3)
您可能想要试用LayoutParameters的weight
属性。在您的情况下,将外部元素的权重设置为0,将中心元素的权重设置为1.这应该使中心元素占用尽可能多的空间。然而,重量属性有时有点奇怪。
另请查看this Q/A
答案 1 :(得分:0)
我会使用Mig Layout(http://www.miglayout.com/和https://github.com/saynomoo/mig4android),因为它确实使这种事情变得更容易。我没想到,但是填充和增长限制看起来应该能够完成你需要的工作。