Java 动态设置textview的宽度

Java 动态设置textview的宽度,java,android,Java,Android,在我的项目中,我需要根据接收到的数据动态地绘制textview的行以显示它。为了正确地对齐它们,我使用了表Row n xml,并用java代码调用了它。现在,在它们的LayoutParam中,我给了MATCH_PARENT,但它根据接收到的数据长度包装文本。现在,我想确定表格视图的字段宽度。我在postExecute方法中完成所有这些过程。在这个方法中,我使用了setWidth函数来根据header行元素的宽度来设置它 Sno.setTag(patient); Sno.setWidth(si

在我的项目中,我需要根据接收到的数据动态地绘制textview的行以显示它。为了正确地对齐它们,我使用了表Row n xml,并用java代码调用了它。现在,在它们的LayoutParam中,我给了MATCH_PARENT,但它根据接收到的数据长度包装文本。现在,我想确定表格视图的字段宽度。我在postExecute方法中完成所有这些过程。在这个方法中,我使用了setWidth函数来根据header行元素的宽度来设置它

 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,它的宽度将从header行元素的宽度中增加。 没有数据的字段不可见。

请尝试以下操作:

      LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
      tv.setLayoutParams(Params1);  

添加以下参数

android:weight=“1”

将xml中的文本视图设置为

android:layout\u width=“0dp”

我想这应该对你有用

是的,您可以从java代码中设置权重

要从java代码设置权重,请执行以下操作:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
                             LayoutParams.MATCH_PARENT,
                             LayoutParams.MATCH_PARENT, 1.0f);
最后一个参数是重量。

试试这个

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);
正如tsp所说

LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50);
然后,在将其添加到表布局中时,您已经覆盖了采用视图和布局参数的
add
methode

还可以考虑TyPald.Apple DimeNon()在DP

中给出值
LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 15, objDeisplayMetrics),TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 50, objDeisplayMetrics));

我使用过它,如questiongive weight=1和width=“0dp”或“fill\u parent”中所述,但我只在java代码中创建textview,并使用xml中的tablelayout id来放置这些视图,我可以在java代码中分配权重吗?如果可以,很抱歉,但没有任何区别Hanks bro,它有助于显示没有任何数据的字段,但它们的宽度与标题行字段的宽度不同,请根据标题行设置textview的权重。您可以使用tv.setText(“字符串”)设置文本@希曼舒尔