Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RelativeLayout.BELOW无法运行_Android_Android Relativelayout - Fatal编程技术网

Android RelativeLayout.BELOW无法运行

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)函数

基本上,我一直在尝试以编程方式放置一组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值)是错误的,但是如果你看我的代码,数学是不言自明的。请告诉我我做错了什么,因为这太让人恼火了

以下是我目前掌握的情况:

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非常好,但我希望保持让孩子们彼此靠近而不是彼此下方的能力。