【问题标题】:Android: Images created by loop using ImageView in LinearLayout not rendering properlyAndroid:使用LinearLayout中的ImageView循环创建的图像无法正确呈现
【发布时间】:2017-11-11 14:25:56
【问题描述】:

我在数组中有某些图片链接,我通过为数组中的每张图片创建一个 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&amp;id=0B6uiOVPlyIu-dnlFdTlZQ1lFNDA, https://drive.google.com/uc?export=view&amp;id=0B6uiOVPlyIu-bUI1ZV9wY0R3cTQ, https://drive.google.com/uc?export=view&amp;id=0B6uiOVPlyIu-WFpXeWVlZ01zX2c]

这是它的渲染方式:

您可以看到边缘被切割,图片不是这个原始尺寸。

这就是我希望它呈现的方式:

【问题讨论】:

  • 您可以使用 imageview 的 scaletype 属性在 imageview 中对齐。

标签: android android-layout imageview android-linearlayout


【解决方案1】:

您可以为 imageview 使用 ScaleType 属性。

这是 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 设置比例类型

使用 glide,您可以使用 centerCropfitCenter

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

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

【讨论】:

  • 谢谢。现在,有了image.setLayoutParams(new android.view.ViewGroup.LayoutParams(450,450));,输出是原样,但是没有image.setLayoutParams(new android.view.ViewGroup.LayoutParams(450,450));,只有第一张图片被放大显示。
  • 尝试减小图像宽度(450,450)的大小,并检查这是否会占用您的宽度。
  • width(350, 350) 减小图片的大小并且似乎可以工作,但是如果有超过 3 个图像,这将失败。 fitCenter() 没有任何效果。如果图片放不下,我希望图片在屏幕中向下移动。
  • fitCenter() 属性适用于 imageview,不适用于线性布局。如果您想在更多行中对齐图片,请使用网格视图:developer.android.com/guide/topics/ui/layout/gridview.html.. 否则,如果您想自定义线性布局,请查看此解决方案:stackoverflow.com/a/6997048/4824088
猜你喜欢
  • 2019-08-18
  • 2021-12-17
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2021-02-01
相关资源
最近更新 更多