我尝试使用Glide lib从服务器下载后显示图像。下面是我的布局。问题是图像会自动调整它们之间的空间(垂直空间)。如果你看到我没有保留任何空间并且在xml预览中,我可以看到两个图像相互接触,一旦从服务器下载,我就可以在textview和imageview之间看到几乎一半的屏幕尺寸。如何管理这个空间。我阅读了很多博客和问题,但仍然不清楚。请咨询。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/pad10">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="@string/welcome"
android:textColor="@color/CadetBlue"
android:textSize="@dimen/topm25"
android:textStyle="bold" />
<ImageView
android:id="@+id/image1"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<ImageView
android:id="@+id/image2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
</LinearLayout>
</ScrollView>
答案 0 :(得分:0)
使用此版本的Glide,它非常好
implementation 'com.github.bumptech.glide:glide:3.7.0'
简单的例子
Glide.with(context)
.load("https://www.ejemplo.com/foto.png")
.into(fotoImageView);
选项示例
Glide.with(context)
.load("https://www.ejemplo.com/foto.png")
.crossFade()
.centerCrop()
.placeholder(R.drawable.ic_temp_image)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.thumbnail(0.5f)
.into(fotoImageView);
在您的情况下,您可以通过centerCrop更改imageView的sacleType,并以同样的方式在Glide中使用.centerCrop(),如果您想使用fitCenter,也可以通过fitCenter更改Glide() 这些属性可以在我提出的Glide版本中找到,运气好!
使用CrossFade()
方法,我们可以在完成加载时使图像以想象力显示
使用CenterCrop()
我们使图像占据ImageView的所有可用空间
使用PlaceHolder(R.drawable.ic_temp_img)
我们可以在加载图片时放置临时图像
使用diskCacheStrategy(DiskCacheStrategy.ALL)
我们可以配置我们将要使用的cahce策略
即使图像非常大thumbnail(0.5f)
,它也允许我们在完全加载时下载缩略图
答案 1 :(得分:0)
使用以下技巧
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getSize(point);
int width = point.x;
ImageView im1 = (ImageView) view.findViewById(R.id.image1);
ImageView im2 = (ImageView) view.findViewById(R.id.image2);
im1.getLayoutParams().width = (width * 90) / 100;
im2.getLayoutParams().width = (width * 90) / 100;