当我在onCreate()中创建Activity并设置新的RelativeLayout时,所有工作都正常。 但我认为创建一个扩展RelativeLayout的类MView并进行所有设置会更方便。如果我这样做,活动保持空白。我应该改变什么MView(或者我需要使用RelativeLayout而不需要扩展名)?无法将自定义布局动态添加到活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout mLayout = new RelativeLayout(this);//Change this to MView mLayout=new MView(this);
//I've been trying to move text from here...
TextView tv = new TextView(this);
tv.setText("TestText");
tv.setTextAppearance(this, android.R.attr.textAppearanceSmall);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
tv.setLayoutParams(lp);
mLayout.addView(tv);
//... to here to MView class that extends RelativeLayout
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
setContentView(mLayout, rlp);
}
所以,MView的构造函数代码为:
public MView(Context context) {
super(context);
TextView tv = new TextView(context);
tv.setText("TestText");
tv.setTextAppearance(context, android.R.attr.textAppearanceLarge);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
tv.setLayoutParams(lp);
this.addView(tv);
}
而且的onCreate变成这样:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MView mLayout = new MView(this);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
setContentView(mLayout, rlp);
}
尝试不添加LayoutParams setContentView。使用setContentView(mLayout); – Sipka
代码是否在工作代码之上,还是代码错误?也许发布你的MView布局初始化代码。 –
setContentView(mayout)仍然不显示任何内容。 – fresheed