6

在我的项目中,我需要根据收到的数据动态绘制文本视图行来显示它。为了正确对齐它们,我使用了 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,它的宽度会从标题行元素的宽度增加。没有数据的字段是不可见的。

4

4 回答 4

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);
于 2013-09-13T12:40:08.723 回答
0

正如茶匙所说

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));
于 2013-09-13T12:42:36.733 回答
0

尝试这个:

      LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
      tv.setLayoutParams(Params1);  
于 2013-09-13T12:26:42.900 回答
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);

最后一个参数是重量。

于 2013-09-13T12:27:27.957 回答