如何使用gridview等图像进行RelativeLayout?

时间:2015-06-20 09:34:31

标签: android android-layout gridview relativelayout

我需要在scrollview中显示像gridview这样的图像。 正如我所读到的那样,在scrollview中使用gridview是不对的。但我需要大图像然后文本,然后列出所有图像并将它们全部放在一个片段中,所以我需要scrollview,就像第一个一样,但是只是没有任何文字的图像 enter image description here 那么有没有办法在RelativeLayout中一个接一个地以编程方式显示图像(比如在gridview中)?

这是我得到的,但它不起作用,图像只是相互叠加。

 for (String pic : mFlat.getAdv_pics()){
            i++;
            ImageView imageView = new ImageView(mActivity);
            imageView.setId(i);

            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
            params.addRule(RelativeLayout.RIGHT_OF, i-1);

            imageView.setLayoutParams(params);

            Log.d("!!!!", "" + i + "|" + imageView.getId());

            Log.d("!!!!", "http://****" + pic + "_small.jpg");
            relativeLayout.addView(imageView);
            Picasso.with(mActivity)
                    .load("http://****" + pic + "_small.jpg")
                    .resize(width,width)
                    .centerCrop()
                    .into(imageView);
        }
    }

感谢

1 个答案:

答案 0 :(得分:1)

gridview存在一个原因,创建这样的布局要复杂得多,并且使用其他视图组合也更难处理(事件,位置......)。您基本上需要在realtivelayout中显示listview,listview的项目将是您自定义网格的行。 例如,您希望在每一行上显示3个图像:

您的主xml将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"/>
</RelativeLayout>

然后你的listview适配器项将是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView1"/>
    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView2"/>

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView3"/>

</RelativeLayout>

现在你需要将一个嵌套数组传递给你的适配器,每个数组都包含3个图像,依此类推。但主要的问题是处理事件,你需要重新考虑它。