我正在尝试动态创建TableRow对象,并将它们添加到tableelayout。 TableRow对象有两个项,一个TextView和一个CheckBox。TextView项需要将其布局权重设置为1,以将CheckBox项推到最右边。
我找不到关于如何以编程方式设置TextView项的布局权重的文档。
我正在尝试动态创建TableRow对象,并将它们添加到tableelayout。 TableRow对象有两个项,一个TextView和一个CheckBox。TextView项需要将其布局权重设置为1,以将CheckBox项推到最右边。
我找不到关于如何以编程方式设置TextView项的布局权重的文档。
当前回答
答案是您必须使用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
其他回答
在那个布局中设置布局参数
创建参数变量
android.widget.LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
1f是权重变量
设置您的小部件或布局
TextView text = (TextView) findViewById(R.id.text);
text.setLayoutParams(params);
这对我有用,我希望对你也有用
首先为父视图设置LayoutParams:
myTableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.FILL_PARENT));
然后为TextView(子)设置:
TableLayout.LayoutParams textViewParam = new TableLayout.LayoutParams
(TableLayout.LayoutParams.WRAP_CONTENT,
TableLayout.LayoutParams.WRAP_CONTENT,1f);
//-- set components margins
textViewParam.setMargins(5, 0, 5,0);
myTextView.setLayoutParams(textViewParam);
这应该对你有用
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT LayoutParams.MATCH_PARENT);
param.weight=1.0f;
在前面的回答中,权重被传递给一个新的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);
TextView text = new TextView(v.getContext());
text.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1f));
(OR)
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
1f表示weight=1;根据您的需要,您可以给出2f或3f,视图将根据空间移动。为了在线性布局中使视图之间的指定距离使用weightsum For“LinearLayout”。
LinearLayout ll_Outer= (LinearLayout ) view.findViewById(R.id.linearview);
LinearLayout llInner = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
llInner.Orientation = Orientation.Horizontal;
llInner.WeightSum = 2;
ll_Outer.AddView(llInner);