Android:使用LinearLayout中的ImageView循环创建的图像无法正确呈现

时间:2017-11-11 14:25:56

标签: android android-layout imageview android-linearlayout

我在数组中有一些图片链接,我通过为数组中的每个图片创建一个ImageView并将其放在LinearLayout中来显示它。如果阵列中只有一个或两个图片,这似乎有效,但是当图片超过两张时图片会被切断。此外,我还想以原始尺寸显示图像。

XML代码:

<LinearLayout
                android:id="@+id/child_2_5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:padding="3dp"
                android:orientation="horizontal"
                android:layout_below="@+id/child_2_4">

</LinearLayout>

MainActivity.java代码:

LinearLayout layout = (LinearLayout) findViewById(R.id.child_2_5);
for(int i=0; i<values1.length; i++) {
    ImageView image = new ImageView(this);
    image.setLayoutParams(new android.view.ViewGroup.LayoutParams(450,450));
    Glide.with(Main2Activity.this).load(values1[i]).into(image); // I am using Glide to display images
    layout.addView(image);
}

此处values1 = [https://drive.google.com/uc?export=view&id=0B6uiOVPlyIu-dnlFdTlZQ1lFNDA, https://drive.google.com/uc?export=view&id=0B6uiOVPlyIu-bUI1ZV9wY0R3cTQ, https://drive.google.com/uc?export=view&id=0B6uiOVPlyIu-WFpXeWVlZ01zX2c]

这就是渲染方式:
enter image description here

正如您所看到的那样,边缘正在切割并且图片不是原始大小。

这就是我想要渲染的方式:
enter image description here

1 个答案:

答案 0 :(得分:0)

您可以将ScaleType属性用于imageview。

这是scaletype列表 https://developer.android.com/reference/android/widget/ImageView.ScaleType.html

在xml中设置scaletype

<ImageView
 android:id="@+id/imgView"
 android:layout_width="150dp"
 android:layout_height="150dp"
 android:scaleType="centerInside"/>

以编程方式设置Scalatype

 imgView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

使用Glide设置scaletype

使用滑行可以使用 centerCrop fitCenter

Glide.with(Main2Activity.this).load(values1[i]).fitCenter().into(image);

有关滑翔图像缩放的更多信息,请查看此内容 https://futurestud.io/tutorials/glide-image-resizing-scaling