addRule(RelativeLayout.BELOW,id)不起作用

时间:2015-11-15 18:15:28

标签: java android android-layout

我尝试在彼此下方创建5个按钮,但它们彼此出现

ArrayList<Button> btn = new ArrayList<>();
for (int i=0; i<10; i++) {
        Log.d("TEST", Integer.toString(i));

        btn.add(new Button(this));
        btn.get(i).setText(Integer.toString(i));
        if (i == 0) {

            btn.get(i).setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        } else {
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.BELOW, btn.get(i-1).getId());
            btn.get(i).setLayoutParams(lp);
        }
        ll.addView(btn.get(i)); 

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

从您命名布局的方式,“ll”,似乎您将这些按钮添加到LinearLayout。如果是这种情况,请尝试将该容器布局更改为RelativeLayout。

答案 1 :(得分:0)

通过添加btn.get(i).setId(View.generateViewId())解决。在使用setId()之前,按钮的所有id都是-1。