这是我在这里的第一个问题,所以请放轻松一下......
我的Android应用程序中的图像加载库Glide有一个奇怪的问题。
请原谅截图中的黑色方块,但我正在签订合同,不允许透露该应用的内容。同样适用于代码本身(我将尽可能多地分享)。
在我的应用程序中我有一个带有一些片段的ViewPager,在一种类型的片段中,我有一个图像,我动态地将其“高度(宽度保持不变)”更改为2个选项之一(见下图)。 正如标题所说,我正在使用Glide加载该图像。
注意:对于每个高度,我都有一个合适且独立的图像(为了不影响宽高比),图像与ImageView的大小完全相同(宽度X高度) 。当然,每当我调整ImageView的大小时,我也会加载适当的图像。
当图像“大”时,它会完美地填充ImageView。 问题是当片段首次显示时(默认为“小”图像),图像的右侧和左侧都有一些空白区域 - 即图像不占据ImageView的整个宽度(请记住加载的图像的大小和ImageView的大小是相同的)。 现在到了奇怪的部分:当我从“大”回到“小”时,图像完全适合ImageView而没有第一次在屏幕上显示片段的空间。
在下面的屏幕截图中,我在大部分图像上放置了一个黑色方块(我无法透露),除了它的“边缘”,并在开发人员选项菜单中启用“show layout bounds”以使我的问题更加明显:
这是默认(“小”)图像的样子: "small" image with spaces
我最多只能发布2个链接,因此没有“大”图片的截图,但相信我 - 它非常适合ImageView。
这是从“大”回到“小”之后的图像: "small" image without spaces
这里有一些代码:
我布局的相关部分:
<FrameLayout
android:id="@+id/frameLayout_sequence_presentation"
android:layout_width="@dimen/galaxyPX1240"
android:layout_height="@dimen/galaxyPX1185"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/galaxyPX100">
<ImageView
android:id="@+id/imageView_sequence_presentation"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
//another view containing some buttons
</FrameLayout>
java的相关部分:
//some code to determine whether we are loading "big"
//or "small" image and set the size of "newHeight" accordingly
mImageView.setImageDrawable(null);
Glide.with(getActivity())
.load(pictureUrl)
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.fitCenter() //just in case
.into(mImageView);
mflMediaContainer.getLayoutParams().height = newHeight;
mflMediaContainer.requestLayout();
我已经尝试了打开或关闭所有可能的组合:“setImageDrawable(null)”,“。override(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL)”和“.fitCenter()”但没有任何作用 - 第一次出现总是空的空间(并且在“大”之后然后回到“小” - 没有空的空间)。