2012-04-08 128 views
1

我想动态创建4个RelativeLayout,以便每个后续布局放置在前一个布局的下方。我试图做这个白色的这段代码:动态设置布局的位置

RelativeLayout layoutParent = (RelativeLayout)findViewById(R.id.layoutParent); 
    int layouts = 4; 

     int dp15 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics()); 

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
      params.setMargins(dp15, dp15, dp15, dp15); 


     for (int l = 0; l <= layouts; l++) 
     { 
      RelativeLayout queueLayout = new RelativeLayout(getApplicationContext()); 
      TextView one = new TextView(getApplicationContext()); 
      one.setText(String.valueOf(l)); 
      queueLayout.setId(2000 + l); 
      if (l != 0) params.addRule(RelativeLayout.BELOW, queueLayout.getId() - 1); 
      queueLayout.addView(one, params); 
      layoutParent.addView(queueLayout); 
     } 

但我无法得到每个布局的理想位置。有人能告诉我,我该怎么做我想做的事情?

预先感谢您!

回答

2

您设置了BELLOW规则,但在将父子代码RelativeLayout添加到父布局时不会使用它(如MisterSquonk所述)。还可以使用另一套LayoutParams为孩子RelativeLayout

for (int l = 0; l <= layouts; l++) { 
     RelativeLayout queueLayout = new RelativeLayout(getApplicationContext()); 
     TextView one = new TextView(getApplicationContext()); 
     one.setText(String.valueOf(l)); 
     queueLayout.setId(2000 + l); 
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     if (l != 0) lp.addRule(RelativeLayout.BELOW, queueLayout.getId() - 1); 
     queueLayout.addView(one, params); 
     layoutParent.addView(queueLayout, lp); 
    } 
+0

我试着做你说什么,但同样的结果... – 2012-04-08 18:45:50

+0

@KrLx_roller做了'TextView's重叠? – Luksprog 2012-04-08 18:46:57

+0

是的,这就是每次执行应用程序时发生的事情 – 2012-04-08 18:56:10