基本上,我一直在尝试以编程方式放置一堆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。
答案 0 :(得分:0)
我最近失去了评论的声誉:)所以我发布它作为答案。您可以尝试使用线性布局而不是相对布局。如果您需要任何进一步的帮助,请告诉我。我会帮你的。 :)
答案 1 :(得分:0)
错误是id必须是正面的。第一个TextView的id为0,这解释了为什么addRule没有响应。