如何根据项目数创建具有动态行数的不可滚动ListView

时间:2014-10-29 12:21:36

标签: android

问题

我有未知数量的相同大小的方形图标应该在水平列表中显示但是如果数字图标超过某个数字,新图标应该显示在新行中,如果我有1个项目它应该显示在中心,它应该显示在中心而不是左边。

所以这个例如我有4个项目。

4 Items

如果我有5个项目并且屏幕已经填满4,则第5个项目应显示在下一行并居中。

4 Items + 1 centered in the a second row

1 个答案:

答案 0 :(得分:0)

没有必要使用ListView。如果你可以确定单行中的项目数量为5,那么你只需要一个RelativeLayout并将你的项目添加到dyanmically。例如。像这样。

RelativeLayout rl_attendingLayout=new RelativeLayout(yourActivity.this);

for (int i = 0; i < numberOfImages; i++) {
        ImageView temp = new ImageView(yourActivity.this);

        temp.setScaleType(ScaleType.CENTER_CROP);
        temp.setId(i + 1);
        temp.setTag(Integer.valueOf(i + 1));

        // set Image to ImageView

        RelativeLayout.LayoutParams attendingParams = new RelativeLayout.LayoutParams(
                imagewidth, imagewidth);
        if (i >= 5) {
            attendingParams.addRule(RelativeLayout.BELOW, (i % 5)
                    + (int) (5 * ((i / 5) - 1)) + 1);
            if (i % 5 > 0) {
                attendingParams.addRule(RelativeLayout.RIGHT_OF, i);
            }
        } else {
            if (i > 0) {
                attendingParams.addRule(RelativeLayout.RIGHT_OF, i);
            } else {
                attendingParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
                attendingParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
            }
        }

        attendingParams.setMargins(margin, 0, 0, margin);
        temp.setLayoutParams(attendingParams);

        rl_attendingLayout.addView(temp);
    }