我正在尝试动态创建TableRow对象,并将它们添加到tableelayout。 TableRow对象有两个项,一个TextView和一个CheckBox。TextView项需要将其布局权重设置为1,以将CheckBox项推到最右边。
我找不到关于如何以编程方式设置TextView项的布局权重的文档。
我正在尝试动态创建TableRow对象,并将它们添加到tableelayout。 TableRow对象有两个项,一个TextView和一个CheckBox。TextView项需要将其布局权重设置为1,以将CheckBox项推到最右边。
我找不到关于如何以编程方式设置TextView项的布局权重的文档。
当前回答
你也可以像这样单独给出权重,
LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lp1.weight=1;
其他回答
你也可以像这样单独给出权重,
LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lp1.weight=1;
还有另一种方法。如果你只需要设置一个参数,例如'height':
TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);
答案是您必须使用TableRow。LayoutParams,不是LinearLayout。LayoutParams或任何其他LayoutParams。
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
不同的LayoutParams是不可互换的,如果你使用了错误的LayoutParams,那么似乎什么都不会发生。文本视图的父视图是一个表行,因此:
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
你必须使用表格布局。LayoutParams是这样的:
TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
最后一个参数是权重。
在前面的回答中,权重被传递给一个新的SomeLayoutType的构造函数。LayoutParams对象。 在许多情况下,使用现有对象更方便——这有助于避免处理我们不感兴趣的参数。
一个例子:
// Get our View (TextView or anything) object:
View v = findViewById(R.id.our_view);
// Get params:
LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams();
// Set only target params:
loparams.height = 0;
loparams.weight = 1;
v.setLayoutParams(loparams);