在我的项目中,我需要根据收到的数据动态绘制textview行以显示它。为了正确对齐它们,我使用了Table Row n xml,并在java代码中调用它。现在,在他们的LayoutParam中,我已经给出了MATCH_PARENT,但它根据接收的数据长度包装文本。现在,我想修复表格视图的字段宽度。我在postExecute方法中执行所有这些过程。在这个方法中,我使用setWidth函数根据标题行元素的宽度来设置它。这里,Sno是一个视图,而size是包含headerRow所有元素宽度的数组。
Sno.setTag(patient);
Sno.setWidth(size[0]);
但它没有解决这个问题,当我尝试getWidth看到它的宽度时,它显示了它的值0.然后我尝试使用LinearLayout.LinearParams设置此宽度
LinearLayout.LayoutParams params_sno = new LinearLayout.LayoutParams(size[0],
LinearLayout.LayoutParams.MATCH_PARENT);
Sno.setLayoutParams(params_sno);
但仍然没有任何好处,其次,如果我从LayoutParams的宽度移除MATCH_PARENT,它的宽度从标题行元素的宽度增加。 没有数据的字段是不可见的。
答案 0 :(得分:4)
试试这个
TableRow row = new TableRow(activityContext);
TableLayout.LayoutParams td_tr = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
row.setWeightSum(10);
row.setLayoutParams(td_tr);
row.setGravity(Gravity.CENTER);
row.setBackgroundColor(Color.parseColor("#D2D2D2"));
TextView tv= new TextView(activityContext);
tv.setText(String.valueOf(i));
tv.setTextAppearance(activityContext, style.tvBoldRow);
tv.setLayoutParams(new TableRow.LayoutParams(0 , LayoutParams.WRAP_CONTENT, 1)); // Here you can set weight to your TextView.
tv.setPadding(2, 2, 2, 2);
tv.setGravity(Gravity.CENTER);
row.addView(tv);
答案 1 :(得分:0)
试试这个:
LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
tv.setLayoutParams(Params1);
答案 2 :(得分:0)
添加以下参数
android:weight = "1"
在xml中查看textview并设置
android:layout_width = "0dp"
。
我认为这应该适合你。
是的,您可以通过java代码设置权重。
从java代码设置权重:
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 1.0f);
最后一个参数是重量。
答案 3 :(得分:0)
正如tsp所说
LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
然后在表格布局中添加它时,你已经覆盖了add
方法,它采用了视图和布局参数。
你也可以考虑使用TypedValue.applyDimention()来给出DP中的值
LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 15, objDeisplayMetrics),TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 50, objDeisplayMetrics));