如何以编程方式在另一个relativelayout之后添加一个新的relativelayout而不重叠?

时间:2013-03-30 15:03:00

标签: android 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”重叠。谁能帮我检查一下是什么问题? 非常感谢你的帮助。

简而言之: 有一个linearlayout(占据全屏)。然后我尝试添加两个linearlayouts.相对布局“rl2”的父级是“ll”,我试图将“rl2”放在“ll”的ALIGN_PARENT_LEFT和“rl1”之下,但它们重叠。

1 个答案:

答案 0 :(得分:0)

我没有测试你的代码但是看到了逻辑,问题可能是因为你已经使用了ALIGN_PARENT_LEFT用于相对布局2.只是简单地解释一下,相对布局“rl2”的父级是rl1。因此,文本“abc”(在rl2中)在rl1的最左边部分对齐,其中存在“ok”。这就是他们重叠的原因。我自己没试过,但尝试使用:

lp2.addRule(RelativeLayout.ALIGN_LEFT);

告诉我它是否有帮助。一切顺利