2012-04-08 3 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

Я пытался делать то, что вы сказали, но тот же результат ... –

+0

@KrLx_roller ли перекрываются 'TextView's? – Luksprog

+0

Да, это то, что происходит каждый раз, когда я выполняю приложение. –

Смежные вопросы