android - 以网格样式在社交提要上显示多个图像

标签 android android-layout

我正在尝试在我的 Android 应用程序的社交提要 ListView 中显示多张图片,这与 Facebook Android 应用程序的做法类似。 引用下图:

enter image description here

帖子中最多可显示 3 张图片。 对于多张图片,我希望图片按照网格类型格式的大小进行动态排列/调整大小,如图所示。

我尝试通过指定 layout_weight 来调整 LinearLayout 内的 3 个 ImageView,但不起作用。 非常感谢任何类型的帮助/建议或示例代码!!! orz

最佳答案

我已经完成了,请检查你是否得到了答案 这是 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="400dp"
    >
    <FrameLayout
        android:id="@+id/imgframe"
        android:layout_width="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_height="match_parent">
    </FrameLayout>
    </RelativeLayout>

现在我已经通过编程方式完成了图像的设置 这是

public class ImageShow extends Activity {
            ImageView img1,img2,img3,img4;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.image_dsgn);
                Display display = getWindowManager().getDefaultDisplay();
                Point size = new Point();
                display.getSize(size);
                int width = size.x;
                int sst=width-20;
                Log.d("Width is",String.valueOf(sst));
                Log.d("Width is",String.valueOf(width));
                int i=3;
                FrameLayout frameLayout=(FrameLayout)findViewById(R.id.imgframe);
                if(i==1)
                {    ImageView imageView = new ImageView(this);
                    imageView.setImageResource(R.drawable.img3);
                    imageView.setPadding(0,5,0,0);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView.setLayoutParams(new FrameLayout.LayoutParams(width,400));
                    frameLayout.addView(imageView);
                }
                if(i==2)
                {    ImageView imageView = new ImageView(this);
                    imageView.setImageResource(R.drawable.img3);
                    imageView.setPadding(0,5,0,0);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView.setLayoutParams(new FrameLayout.LayoutParams(width/2,
                            400));
                    ImageView imageView1 = new ImageView(this);
                    imageView1.setImageResource(R.drawable.img3);
                    imageView1.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView1.setLayoutParams(new FrameLayout.LayoutParams(width/2,
                            400));
                    imageView1.setX(width/2);
                    imageView1.setPadding(5,5,0,0);
                    frameLayout.addView(imageView);
                    frameLayout.addView(imageView1);
                }
                if(i==3)
                {
                    ImageView imageView = new ImageView(this);
                    imageView.setImageResource(R.drawable.img3);
                    imageView.setPadding(0,5,0,0);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView.setLayoutParams(new FrameLayout.LayoutParams(width/2,
                            400));
                    ImageView imageView1 = new ImageView(this);
                    imageView1.setImageResource(R.drawable.img3);
                    imageView1.setX(width/2);
                    imageView1.setPadding(5,5,0,0);
                    imageView1.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView1.setLayoutParams(new FrameLayout.LayoutParams(width/2,
                            200));
                    ImageView imageView2 = new ImageView(this);
                    imageView2.setImageResource(R.drawable.img3);
                    imageView2.setX(width/2);
                    imageView2.setY(200);
                    imageView2.setPadding(5,5,0,0);
                    imageView2.setScaleType(ImageView.ScaleType.FIT_XY);
                    imageView2.setLayoutParams(new FrameLayout.LayoutParams(width/2,
                            200));
                    frameLayout.addView(imageView);
                    frameLayout.addView(imageView1);
                    frameLayout.addView(imageView2);
                }
                if(i==4)
                {
                    //x=0,y=0
                    ImageView imageView = new ImageView(this);
                    imageView.setImageResource(R.drawable.img3);
                    imageView.setPadding(0,5,0,0);
                    imageView.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400));
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    //x=200,y==0
                    ImageView imageView1 = new ImageView(this);
                    imageView1.setImageResource(R.drawable.img3);
                    imageView1.setX(sst/2);
                    imageView1.setPadding(2,5,0,0);
                    imageView1.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3));
                    imageView1.setScaleType(ImageView.ScaleType.FIT_XY);

                    ImageView imageView2 = new ImageView(this);
                    imageView2.setImageResource(R.drawable.img3);
                    imageView2.setX(sst/2);
                    imageView2.setY(400/3);
                    imageView2.setPadding(2,5,0,0);
                    imageView2.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3));
                    imageView2.setScaleType(ImageView.ScaleType.FIT_XY);

                    ImageView imageView3= new ImageView(this);
                    imageView3.setImageResource(R.drawable.img3);
                    imageView3.setX(sst/2);
                    imageView3.setY((400/3+400/3));
                    imageView3.setPadding(2,5,0,0);
                    imageView3.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3));
                    imageView3.setScaleType(ImageView.ScaleType.FIT_XY);


                    TextView textView=new TextView(this);
                    textView.setText("+ 6");
                    textView.setX(sst/2);
                    textView.setTextColor(Color.parseColor("#ffffff"));
                    textView.setTypeface(null, Typeface.BOLD);
                    textView.setY(400/3+400/3);
                    textView.setGravity(Gravity.CENTER);
                    textView.setTextSize(20);
                    textView.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3));
                    frameLayout.addView(imageView);
                    frameLayout.addView(imageView1);
                    frameLayout.addView(imageView2);
                    frameLayout.addView(imageView3);
                    frameLayout.addView(textView);
                }

            }
        }

关于android - 以网格样式在社交提要上显示多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095433/

相关文章:

java - 无法在 Android 中使用 AlarmManager 停止服务

java - 安卓 : Refresh ListView not working

android - 如何在Android中创建具有不同分段颜色的水平进度条

java - 初学者 Android : Files and Checkboxes

android - 如何为每种产品风格提供不同的启动器图标

android - ServiceStack.Redis 从统一导出的 .apk 文件中抛出 PlatformNotSupported 异常

android - 如何使应用程序兼容平板电脑?

android - 为什么可见性在嵌套 fragment 插入之前/之后发生变化

android - 将 ActionBar 添加到 Android Studio 中的默认 Google map Activity 模板

java - 我可以在 RecyclerView 中将 Cursor Adapter 与 GridView 一起使用吗