RelativeLayout.BELOW无法运行

时间:2015-07-10 23:48:17

标签: android relativelayout

基本上,我一直在尝试以编程方式放置一堆EditText和TextViews,所有这些都在RelativeLayout中(我必须以编程方式执行它,因为内容的数量可变,具体取决于多少"员工和# 34;用户已输入)。现在,每个"员工"我只需要十个数据,所以我决定使用基数10中的id来跟踪数据(即员工1获得ID 0-9,员工2得到id 10-19等)。但是,每次我使用LayoutParams.addRule(int,int)函数并手动输入我自己的id时,它都无法获取它。如果我使用" R,"使用addRule(int,int)函数。有用。我能想出的唯一原因就是解释addRule未能响应手动输入的id值,如果我的数学(对于id值)是错误的,但如果你查看我的代码,数学是非常不言自明。请告诉我我做错了什么,因为这令人抓狂。

这是我到目前为止所拥有的:

for(int i=0;i<u.getTemp().size();i++){
        int index=10*i;
        RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
        if(i==0)
            layoutParams.addRule(RelativeLayout.BELOW,R.id.start_date);
        else
            layoutParams.addRule(RelativeLayout.BELOW,index-1);
        layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

        TextView empName=new TextView(rl.getContext());
        empName.setTextSize(26);
        empName.setText(u.getTemp().get(i).getName());
        empName.setId(index++);
        empName.setLayoutParams(layoutParams);
        rl.addView(empName);

        TextView empNum=new TextView(rl.getContext());
        empNum.setText("Employee Number: " + u.getTemp().get(i).getNum());
        empNum.setId(index++);
        RelativeLayout.LayoutParams empNumLayout=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
        empNumLayout.addRule(RelativeLayout.BELOW,empNum.getId()-1);
        empNumLayout.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        empNum.setLayoutParams(empNumLayout);
        rl.addView(empNum);

        EditText regHours=new EditText(rl.getContext());
        regHours.setHint("Regular Hours");
        regHours.setId(index++);
        RelativeLayout.LayoutParams regHoursLayout=new RelativeLayout.LayoutParams(300,RelativeLayout.LayoutParams.WRAP_CONTENT);
        regHoursLayout.addRule(RelativeLayout.BELOW,regHours.getId()-1);
        regHoursLayout.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        regHours.setLayoutParams(regHoursLayout);
        rl.addView(regHours);
    }

*注意:rl是我放在xml文件中的relativeLayout。

2 个答案:

答案 0 :(得分:0)

我最近失去了评论的声誉:)所以我发布它作为答案。您可以尝试使用线性布局而不是相对布局。如果您需要任何进一步的帮助,请告诉我。我会帮你的。 :)

答案 1 :(得分:0)

错误是id必须是正面的。第一个TextView的id为0,这解释了为什么addRule没有响应。