2012-12-25 92 views
0

我遇到了一些麻烦,以编程方式创建relativeLayout。为了更好地理解,我在下面附加了一张图片。带加号和减号的按钮是按钮,也应该动态创建并添加到布局。 tv4和tv5的值应相应增加/减少按钮按下。android以编程方式创建RelativeLayout

我迄今所做的:

1)创建的布局:

RelativeLayout rl = new RelativeLayout(this); 
    rl.setId(i); 
    rl.setBackgroundResource(R.drawable.bg); 
RelativeLayout.LayoutParams Lparams = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.MATCH_PARENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 
     Lparams.addRule(RelativeLayout.BELOW, R.id.RL_default); 
     Lparams.setMargins(3, 5, 3, 0); 
     rl.setLayoutParams(Lparams); 

2)将TV1:

Lparams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    Lparams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    Lparams.setMargins(10, 0, 0, 0); 

    TextView txt = new TextView(this); 
    txt.setTextColor(Color.parseColor("#FFFFFF")); 
    txt.setId(x); 
    txt.setTextSize(25); 
    txt.setLayoutParams(Lparams); 
    txt.setText(name); 
      rl.addView(txt); 

3)将TV2:

  Lparams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    Lparams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    Lparams.addRule(RelativeLayout.BELOW, txt.getId()); 
    Lparams.setMargins(10, 0, 0, 0); 

    TextView txtS = new TextView(this); 
    txtS.setId(y); 
    txtS.setText("Test: "); 
    txtS.setTextSize(22); 

    txtS.setLayoutParams(Lparams); 
    txtS.setGravity(Gravity.BOTTOM); 
    txtS.setPadding(0, 0, 0, 20); 
      rl.addView(txtS); 

4)现在我想要cre吃第一个按钮:

  Button btnSminus = new Button(this); 
    btnSminus.setId(btn1); 
    btnSminus.setText("<"); 
    btnSminus.setTextSize(20); 

    Lparams= new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    Lparams.addRule(RelativeLayout.RIGHT_OF, txtS.getId()); 


    btnSminus.setLayoutParams(Lparams); 
      rl.addView(btnSminus); 

的问题是,该按钮的观点似乎只是从屏幕上消失时行Lparams.addRule(RelativeLayout.RIGHT_OF,txtS.getId());被执行。可能是什么原因?

enter image description here

回答

2

我的猜测是,这是因为你的txtS设置宽度为match_parent,使按键被按下关闭屏幕。您可以通过将其更改为wrap_content来解决该问题。

+0

是一个非常愚蠢的错误,谢谢。问题没有了。还有一个问题:我必须在我的onPause()或onDestroy()方法中做些什么来保存动态添加的布局?由于它在应用程序重新启动后消失。 – Droidman