Android RelativeLayout.BELOW无法运行
基本上,我一直在尝试以编程方式放置一组EditText和TextView,所有这些都在一个RelativeLayout中(我必须以编程方式这样做,因为内容的数量取决于用户输入的“员工”数量)。现在,我每个“员工”只需要10条数据,所以我决定使用基数10中的id来跟踪数据(即员工1获得id 0-9,员工2获得id 10-19,等等)。但是,每次我使用LayoutParams.addRule(int,int)函数并手动输入我自己的id时,它都无法获取它。如果我使用addRule(int,int)函数使用“R”,它就可以工作。我能想到的解释addRule无法响应手动输入的id值的唯一原因是我的数学(对于id值)是错误的,但是如果你看我的代码,数学是不言自明的。请告诉我我做错了什么,因为这太让人恼火了 以下是我目前掌握的情况:Android RelativeLayout.BELOW无法运行,android,android-relativelayout,Android,Android Relativelayout,基本上,我一直在尝试以编程方式放置一组EditText和TextView,所有这些都在一个RelativeLayout中(我必须以编程方式这样做,因为内容的数量取决于用户输入的“员工”数量)。现在,我每个“员工”只需要10条数据,所以我决定使用基数10中的id来跟踪数据(即员工1获得id 0-9,员工2获得id 10-19,等等)。但是,每次我使用LayoutParams.addRule(int,int)函数并手动输入我自己的id时,它都无法获取它。如果我使用addRule(int,int)函数
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);
}
for(int i=0;i我最近失去了评论的声誉:),所以我将其作为一个答案发布。您可以尝试使用线性布局而不是相对布局。如果您需要任何进一步的帮助,请告诉我。我会帮你的。:) 错误在于ID必须为正。第一个文本视图的id为0,这解释了addRule没有响应的原因。我认为您可以使用列表视图,而不是以这种方式创建它……同意@sravan的观点,因为有更好的方法来解决此问题。你能给我们一个XML布局的例子吗?我相信你可以用一种更简洁的方式解决这个问题。你最好使用XML布局,
而不是用Java,构建UI
@DerGol…问题是我不能使用XML布局,因为编辑文本和文本视图的数量会随着用户输入的内容而变化。@sravan一旦有机会,我会尝试listView,但我仍然不确定我的代码到底出了什么问题。所有的编辑文本和文本视图都显示在RelativeLayout的左上角。LinearLayouts非常好,但我希望保持让孩子们彼此靠近而不是彼此下方的能力。