我的xml中有一个ImageView -
<ImageView
android:id="@+id/image"
android:layout_centerHorizontal="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>
我正在使用Glide库从网址获取图片并将其设置为ImageView。
我想要的是将图像的宽度与父宽度相匹配,然后在不影响宽高比的情况下调整图像的高度。
如果图像尺寸非常小,则应将其展开以匹配父宽度,如果图像尺寸大于屏幕尺寸,则应缩小以匹配父宽度。
ImageView img = (ImageView) findViewById("image");
Glide.with(this).load("url here").into(img);
我应该使用哪种scaleType?
是可能在XML中还是需要java代码?
提前致谢。 :)
答案 0 :(得分:2)
这对我有帮助。只需在 imageView xml 中使用
android:adjustViewBounds="true"
并在滑行中添加覆盖:
GlideApp.with(context)
.load(url)
.override(Resources.getSystem().getDisplayMetrics().widthPixels)
.into(imageView)
答案 1 :(得分:1)
使用android:scaleType:fitXY
<ImageView
android:id="@+id/image"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>
和java代码
Glide.with(this).load(url)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(img);
答案 2 :(得分:1)
可以从xml中获取。我使用以下代码实现了它。
<ImageView
android:id="@+id/ivImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
缩放XY使用FILL缩放图像,调整视图边界可保留纵横比。 我认为你不需要中心水平属性。
在此之后,我调用了一个照片加载器库,只是将图像下载到图像视图中。
答案 3 :(得分:0)
您可以将ConstraintLayout
用于此目的。
如果至少有一个视图尺寸设置为&#34;匹配约束&#34>,您可以将视图大小设置为16:9之比。 (0dp)
引自android developers。您也可以参考this medium article以获取有关如何实现此比例的参考。