Android应用动态创建的按钮显示在同一个地方

时间:2016-11-27 06:08:17

标签: android android-layout

我正在使用我的第一个Android应用程序并遇到了一些麻烦。我尝试启动一个新活动,该活动从前一个活动中获取一个ArrayList,并为列表中的每个项目创建一个按钮。我已经尝试过查看许多其他堆栈溢出帖子,但没有一个能帮我解决问题。

我尝试了很多不同的策略,目前我的代码如下:

Future

}

和XML代码:

public class VideoMenu extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_menu);
    Bundle b = getIntent().getExtras();

    ArrayList<String> videos = b.getStringArrayList("videos");

    setContentView(R.layout.activity_video_menu);

    for(int i=0;i<videos.size();i++){
        Button myButton = new Button(this);
        myButton.setText(videos.get(i));
        myButton.setId(i);

        RelativeLayout ll = (RelativeLayout)findViewById(R.id.videos);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        if (i != 0) {
            lp.addRule(RelativeLayout.END_OF, i - 1);
        }
        myButton.setLayoutParams(lp);

        ll.addView(myButton,lp);
    }

}

编译得很好,但所有按钮都显示在另一个上面。如果您可以包含为什么任何代码建议可能有效的原因,我将不胜感激。我想了解更多相关信息:)

编辑:修正错误

1 个答案:

答案 0 :(得分:0)

原因是您要将按钮添加到var mergeRecord = record.load({ type: 'custrecord_merge_vendor', id: '12', isDynamic: true }); RelativeLayout基本上将所有视图添加到视图中指定的任何位置。你没有真正指定,所以他们都是相互重叠的。

要解决此问题,请将RelativeLayout改为RelativeLayoutLinearLayoutorientationhorizontalvertical会在水平线上并排添加视图,horizontal会将它们添加到垂直线中。