如何在android中自动增加动态创建的TextView的高度?

时间:2014-10-18 08:52:26

标签: android android-layout textview

我动态创建textView依赖于放在Tableleyout中的List数据 我已经给文本视图指定了固定的高度宽度。现在想要增加该textView的高度 我使用了以下代码片段来实现它

1. LayoutParams params = textView.getLayoutParams();
params.height = 70;
textView.setLayoutParams(params);


 2.  TextView textView = (TextView)findViewById(R.id.text_view);
    ViewGroup.LayoutParams params = textView.getLayoutParams();
    params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
    textView.setLayoutParams(params);

但在行params.height

给出了nullpointer异常

我的代码

private void buildStkLstTable(List<StockDetails> stkList) {
        int count = 0;      
        TableFormat tf = new TableFormat();
        String stkItemNm = Constants.Common.STR_BLNK;
        String stkItemId = Constants.Common.STR_BLNK;
        String avlQty = Constants.Common.STR_BLNK;

        // Show in Table format
        for (StockDetails stk : stkList) {

            stkItemNm = stk.getStkItemNm();
            stkItemId = stk.getMstStkItemId();
            avlQty = String.valueOf(stk.getAvlQty());
            defQty = String.valueOf(stk.getDefQty());
            stkGrpId = stk.getMstStkGrpId();

            // Create the table row
            tr = new TableRow(this);
            tr.setId(1000 + count);
            tr.setLayoutParams(new LayoutParams(100, 100));

            // 0th coll
            lblHStkItmId = new TextView(this);
            int id = 100 + count;
            String text = stkItemId;
            tf.setTblDataLbl(lblHStkItmId, id, text);
            tf.setTblDataLblFrmt(lblHStkItmId, Constants.TableFormat.VIEW_WIDTH_0, Constants.TableFormat.VIEW_HEIGHT_0,
                    Constants.TableFormat.GRAVITY_C);
            tr.addView(lblHStkItmId);

            // 1st coll
            lblStkNm = new TextView(this);
            int lblStkNmId = 200 + count;
            String lblStkNmTxt = stkItemNm;
            tf.setTblDataLbl(lblStkNm, lblStkNmId, lblStkNmTxt);
            tf.setTblDataLblFrmt(lblStkNm, Constants.TableFormat.VIEW_WIDTH_160, Constants.TableFormat.VIEW_HEIGHT, Constants.TableFormat.GRAVITY_L);               
            tr.addView(lblStkNm);

            // 2 nd coll
            ordrQty = new EditText(this);
            int ordrQtyId = 300 + count;
            String ordrQtyHnt = "Qty";
            String ordrQtyText = Constants.Common.STR_BLNK;
            tf.setTblDataEdit(ordrQty, ordrQtyId, ordrQtyText);
            tf.setTblDataEditFrmt(ordrQty, Constants.TableFormat.VIEW_WIDTH_100, ordrQtyHnt, Constants.TableFormat.GRAVITY_R,
                    InputType.TYPE_CLASS_NUMBER, maxLength);
            tr.addView(ordrQty);


            // finally add this to the table row
            tblOrdrPrdData.addView(tr, new TableLayout.LayoutParams(100, 100));
            count++;
        }
    }

public class TableFormat extends Activity{
    public void setTblDataLblFrmt(TextView lbl, int width, int height, int gravity) {
        lbl.setPadding(Constants.TableFormat.PADDING_2, Constants.TableFormat.PADDING_0, Constants.TableFormat.PADDING_5,
                Constants.TableFormat.PADDING_0);
        lbl.setTextColor(Color.BLACK);
        lbl.setWidth(width);
        LayoutParams params = lbl.getLayoutParams();--- here i used above mentioned code snippet 
         params.height = LayoutParams.WRAP_CONTENT;
         lbl.setLayoutParams(params);       
        //lbl.setHeight(height);
        lbl.setGravity(gravity);
        lbl.setTextSize(tfContext.getResources().getDimensionPixelSize(R.dimen.textDataSize));
        lbl.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);

    }
}

Log cat ::

10-18 14:19:49.721: E/AndroidRuntime(3337): FATAL EXCEPTION: main
10-18 14:19:49.721: E/AndroidRuntime(3337): java.lang.NullPointerException
10-18 14:19:49.721: E/AndroidRuntime(3337):     at com.xxxxx.common.utils.TableFormat.setTblDataLblFrmt(TableFormat.java:78)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at com.xxxxx.activity.OrderProductActivity.buildStkLstTable(OrderProductActivity.java:439)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at com.xxxxx.activity.OrderProductActivity.onItemSelected(OrderProductActivity.java:257)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:895)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.widget.AdapterView.access$200(AdapterView.java:50)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:863)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.os.Handler.handleCallback(Handler.java:615)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.os.Looper.loop(Looper.java:137)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at android.app.ActivityThread.main(ActivityThread.java:4960)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at java.lang.reflect.Method.invoke(Method.java:511)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
10-18 14:19:49.721: E/AndroidRuntime(3337):     at dalvik.system.NativeStart.main(Native Method)

在TableFormat.java:78收到错误请帮助解决它

1 个答案:

答案 0 :(得分:1)

试试这个:

 // 0th coll
            lblHStkItmId = new TextView(this);

            int id = 100 + count;
            String text = stkItemId;
            tf.setTblDataLbl(lblHStkItmId, id, text);
            tf.setTblDataLblFrmt(lblHStkItmId, Constants.TableFormat.VIEW_WIDTH_0,             Constants.TableFormat.VIEW_HEIGHT_0,
                    Constants.TableFormat.GRAVITY_C);

现在您的params不会是null

  public class TableFormat extends Activity{
        public void setTblDataLblFrmt(TextView lbl, int width, int height, int gravity) {
           lbl.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));  // here set the layoutparam
            lbl.setPadding(Constants.TableFormat.PADDING_2, Constants.TableFormat.PADDING_0, Constants.TableFormat.PADDING_5,
                    Constants.TableFormat.PADDING_0);
            lbl.setTextColor(Color.BLACK);
            lbl.setWidth(width);
             ViewGroup.LayoutParams params = lbl.getLayoutParams(); 
             params.height = 200;  // put the height value you want
             lbl.setLayoutParams(params);       
            //lbl.setHeight(height);
            lbl.setGravity(gravity);
            lbl.setTextSize(tfContext.getResources().getDimensionPixelSize(R.dimen.textDataSize));
            lbl.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);

        }
    }
相关问题