以编程方式将项添加到相对布局

use*_*436 16 android android-layout android-relativelayout

我一直在寻找这个问题的答案.我是Android的新手,并尝试通过java而不是xml以编程方式将项目添加到相对布局.我已经创建了一个测试类来尝试它,但项目保持堆叠而不是正确格式化.我现在只想在另一个下面使用一个TextView(最终我将使用参数的左侧和右侧,但我开始很简单.我缺少什么?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    RelativeLayout ll = new RelativeLayout(this);
    ll.setId(99);
    sv.addView(ll);
    TextView tv = new TextView(this);
    tv.setText("txt1");
    tv.setId(1);
    TextView tv2 = new TextView(this);
    tv2.setText("txt2");
    tv2.setId(2);
    RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    lay.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    ll.addView(tv, lay);
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
    ll.addView(tv2, p);  this.setContentView(sv);};
Run Code Online (Sandbox Code Playgroud)

Jem*_*ems 21

    p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
Run Code Online (Sandbox Code Playgroud)

这条线意味着tv2的底部与tv的底部对齐 - 换句话说,它们将相互覆盖.你想要的财产大概是RelativeLayout.BELOW.但是,我强烈建议您使用xml.


Cri*_*ian 5

使用:

p.addRule(RelativeLayout.BELOW, tv.getId());
Run Code Online (Sandbox Code Playgroud)