Java 在生成的TextView上以编程方式设置页边距时出错
我生成如下文本视图:Java 在生成的TextView上以编程方式设置页边距时出错,java,android,android-layout,textview,Java,Android,Android Layout,Textview,我生成如下文本视图: TextView myView = new TextView(this); myView.setText(Html.fromHtml(myString)); linearLayout2.addView(myView); 当我将此代码更改为此以设置边距时: TextView myView = new TextView(this); myView.setText(Html.fromHtml(myString)); LinearLayou
TextView myView = new TextView(this);
myView.setText(Html.fromHtml(myString));
linearLayout2.addView(myView);
当我将此代码更改为此以设置边距时:
TextView myView = new TextView(this);
myView.setText(Html.fromHtml(myString));
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)myView.getLayoutParams();
params.setMargins(20, 0, 0, 0);
myView.setLayoutParams(params);
linearLayout2.addView(myView);
我得到这个错误:
无法启动活动
ComponentInfo{com.example./com.example.Activity}:
java.lang.NullPointerException:尝试调用虚拟方法“void”
android.widget.LinearLayout$LayoutParams.setMarginsint,int,int,
null对象引用上的int
我怎样才能消除这个错误
谢谢。您可以在添加TextView时开始传递LayoutParams的实例。例如 您应该创建 新建LinearLayout.LayoutParamsLinearLayout.LayoutParams.WRAP_内容,LinearLayout.LayoutParams.WRAP_内容
而不是从视图中获取它们 问题是一致的
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)myView.getLayoutParams();
myView.getLayoutParams;将返回null,因为它尚未添加到任何视图中。您只需首先在linearLayout2中添加视图,然后就可以从视图中获取LayoutParams
或者,您可以创建自己的布局参数并将其指定给视图。像这样
LinearLayout.LayoutParam params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
您应该创建新的LinearLayout.LayoutParamsLinearLayout.LayoutParams.WRAP_内容,LinearLayout.LayoutParams.WRAP_内容,而不是从视图中获取它们。
LinearLayout.LayoutParam params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)