将RelativeLayout动态地安排在另一个下面

时间:2014-10-14 10:54:54

标签: android relativelayout

我正在尝试动态构建由图像和文本视图组成的相对布局。我已经尝试构建一个循环,将下一个相对布局放在前者之下,但我无法真正使其工作。最终的结果应该是这样的,但我想如果我弄清楚如何在前一个下方对齐,我也可以弄清楚如何将它放在前面的相对布局中。
enter image description here
有什么建议吗?到目前为止,这是我的代码:

RelativeLayout container1 = (RelativeLayout) rootView
                .findViewById(R.id.main_layout);

        for (int i = 0; i < pictures.size(); i++) {
            RelativeLayout tile = new RelativeLayout(getActivity());
            tile.setId(i);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            params.height = height / 3;
            params.width = width / 2;
            tile.setLayoutParams(params);

            ImageButton ibGood = new ImageButton(getActivity());
            ibGood.setId(1);
            ibGood.setImageResource(pictures.get(0));
            ibGood.setAdjustViewBounds(true);
            ibGood.setMaxHeight(height / 3 / 5 * 4);
            ibGood.setMaxWidth(width);
            ibGood.setScaleType(ScaleType.CENTER_CROP);
            ibGood.setPadding(5, 5, 5, 5);

            tile.addView(ibGood);

            RelativeLayout.LayoutParams tvPriceParam = new RelativeLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            tvPriceParam.addRule(RelativeLayout.BELOW, ibGood.getId());
            tvPriceParam.addRule(RelativeLayout.ALIGN_LEFT, ibGood.getId());

            TextView tvPrice = new TextView(getActivity());
            tvPrice.setId(2);
            tvPrice.setHeight(tile.getHeight() / 5);
            tvPrice.setWidth(tile.getWidth() / 5 * 2);
            tvPrice.setPadding(5, 0, 0, 5);
            tvPrice.setText(Integer.toString(price.get(0)));
            tile.addView(tvPrice, tvPriceParam);

            if (counter == 0) {
                container1.addView(tile);
            } else if (counter % 2 == 0) {
                RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
                lay.addRule(RelativeLayout.BELOW, -1);
                tile.setLayoutParams(lay);
                container1.addView(tile);
            }

            counter += 1;
        }

1 个答案:

答案 0 :(得分:4)

你可以使用自定义gridview !!你为什么用相对布局做这个?

这里是你可以用来实现你想要的东西的链接..

http://www.learn-android-easily.com/2013/09/android-custom-gridview-example.html

http://www.caveofprogramming.com/uncategorized/custom-gridview-with-imageview-and-textview-in-android/

请访问3个链接,你会得到你想要的...相对布局..

谢谢, Madhav