我真的不明白为什么这个简单的代码在这一行layout.addView(button);
super.onCreate(savedInstanceState);
layout = (LinearLayout)findViewById(R.id.linearLayout);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
Button button = new Button(this);
button.setHeight(100);
button.setWidth(100);
button.setText("HELLO");
button.setLayoutParams(p);
layout.addView(button);
activity_main.xml中
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayout">
</LinearLayout>
编辑: 编辑过的代码仍然粉碎。但现在压缩setContentView。
super.onCreate(savedInstanceState);
layout = (LinearLayout)findViewById(R.id.linearLayout);
setContentView(layout);
LayoutParams p = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
int i,j;
Button button = new Button(this);
button.setHeight(100);
button.setWidth(100);
button.setText("HELLO");
layout.addView(button,p);
Logcat报告
答案 0 :(得分:5)
仅仅因为你没有打电话给setContentView()
。 View
的根Activity
为null
,layout
也是{{1}}。
答案 1 :(得分:0)
您在此处指定Views
宽度高度:
button.setHeight(100);
button.setWidth(100);
然后立即覆盖它:
button.setLayoutParams(p);
试试这个,移除setWidth
和setLayoutParams
并移除p
:
layout.addView(button, new LayoutParams(100,100));