设置textview的动态宽度

Him*_*huR 6 java android

在我的项目中,我需要根据收到的数据动态绘制textview行以显示它.为了正确对齐它们,我使用了Table Row n xml,并在java代码中调用它.现在,在他们的LayoutParam中,我已经给出了MATCH_PARENT,但它根据接收的数据长度包装文本.现在,我想修复表格视图的字段宽度.我在postExecute方法中执行所有这些过程.在这个方法中,我使用setWidth函数根据标题行元素的宽度来设置它.这里,Sno是一个视图,而size是包含headerRow所有元素宽度的数组.

 Sno.setTag(patient);
 Sno.setWidth(size[0]); 
Run Code Online (Sandbox Code Playgroud)

但它没有解决这个问题,当我尝试getWidth看到它的宽度,它显示其值0.然后我尝试使用LinearLayout.LinearParams设置此宽度

LinearLayout.LayoutParams params_sno = new LinearLayout.LayoutParams(size[0],
LinearLayout.LayoutParams.MATCH_PARENT);
Sno.setLayoutParams(params_sno);
Run Code Online (Sandbox Code Playgroud)

但是仍然没有任何好处,其次,如果我从LayoutParams的宽度移除MATCH_PARENT,它的宽度从标题行元素的宽度增加.没有数据的字段是不可见的.

San*_*hah 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);
Run Code Online (Sandbox Code Playgroud)