将视图以编程方式添加到相对布局后不可见

时间:2019-06-06 17:59:14

标签: java android android-layout

我正在创建一个活动以显示时间表。我有一个讲座列表,以及每个讲座的日期和持续时间。我正在尝试从布局xml文件中填充复合视图,然后将已填充的视图添加到arraylist中的相对布局之一,其中arraylist的一个元素代表一栏或一天。 days是相对布局的数组列表。下面的功能是活动的成员,并且是添加讲座的逻辑。根据讲座的时间长度,我使用ViewGroup LayoutParams为视图内的卡片调整高度,然后将视图添加到具有相对布局参数的相对布局中。但是视图没有显示出来。

编辑:代码运行正常,模型类的数组列表有问题。

Screenshot of the activity

private void addTimeTableViews(){
    for (LectureModel lecture : lectures) {
        LayoutInflater inflater = LayoutInflater.from(this);
        int currentDay = lecture.getDayOfTheWeek();
        RelativeLayout layout = days.get(currentDay);
        View view = inflater.inflate(R.layout.layout_tt_box, layout);
        int boxHeight = getTimeDifference(lecture.getStartTime(),lecture.getEndTime());

        //to adjust height of the card according to length of lecture
        MaterialCardView card = view.findViewById(R.id.tt_box_card);
        int cardWidth = card.getLayoutParams().width;
        ViewGroup.LayoutParams cardParams = new ViewGroup.LayoutParams(cardWidth, boxHeight - 4);
        card.setLayoutParams(cardParams);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT
        );
        params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
        params.topMargin = getTimeInMinutes(lecture.getStartTime());

        layout.addView(view, params);
    }
}

0 个答案:

没有答案