2013-03-30 2 views
0

Я попытался программно добавить новое relativelayout после другого relativelayout без перекрытия.Как программно добавить новое релятивирование после другого relativelayout без перекрытия?

LinearLayout ll = (LinearLayout)findViewById(R.id.mainLL); 
    ll.setOrientation(LinearLayout.VERTICAL);  

    RelativeLayout rl = new RelativeLayout(MainActivity.this); 
    rl.setId(2); 
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 50);//RelativeLayout.LayoutParams.WRAP_CONTENT 
    ll.addView(rl, lp); 

    TextView iTextView = new TextView(this);   
    iTextView.setTextSize(pthTextFontSize); 
    iTextView.setText("ok"); 
    rl.addView(iTextView);  
    // finish adding the first relativelayout. 


    RelativeLayout rl2 = new RelativeLayout(MainActivity.this); 
    RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 50);  
    lp2.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    lp2.addRule(RelativeLayout.BELOW, rl.getId()); 
    rl2.setLayoutParams(lp2); 
    ll.addView(rl2); 

    TextView iTextView2 = new TextView(this);   
    iTextView2.setTextSize(pthTextFontSize); 
    iTextView2.setText("abc"); 
    rl.addView(iTextView2);  

Однако слова «ok» и «abc» перекрываются. Может ли кто-нибудь помочь мне проверить, что не так? Большое спасибо за помощь.

Вкратце: Существует линейная пауза (занята полным экраном). Затем я пытаюсь добавить два linearlayouts.Источник относительной компоновки «rl2» равен «ll», и я попытался поместить «rl2» в ALIGN_PARENT_LEFT из «ll» и ниже «rl1», но они перекрываются.

ответ

0

Я не тестировал ваш код, но, видя логику, проблема может заключаться в том, что вы использовали ALIGN_PARENT_LEFT для относительной компоновки 2. Для краткого объяснения родителем относительной компоновки «rl2» является rl1. Итак, текст «abc» (в rl2) выравнивается в самой левой части rl1, где «ok» существует. Вот почему они перекрываются. Я сам не пробовал, но попробую использовать:

lp2.addRule(RelativeLayout.ALIGN_LEFT); 

Скажите, если это поможет. Все самое лучшее

+0

Спасибо, я попытался использовать ваш код, но они все еще перекрываются. Наверное, я не упомянул проблему достаточно ясно. Фактически, есть linearlayout (занятый полный экран). Затем я пытаюсь добавить два линейных выхода. Поэтому я предполагаю, что родительский элемент относительной компоновки «rl2» равен «ll», и я попытался поместить «rl2» в ALIGN_PARENT_LEFT из «ll» и ниже «rl1», но они перекрываются. Пожалуйста, помогите, спасибо! – manhon

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