我正在动态创建textView取决于放置在Tableleyout中的List数据我已经给文本视图指定了固定的高度宽度。现在想增加该文本视图的高度我使用了以下代码片段使成为可能
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
行给我空指针异常
我的代码
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);
}
}
日志类别::
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请帮助解决
试试这个:
// 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);
}
}