位图 ImageView,放置于 HorizontalScrollView 中。如何使 HorizontalScrollView 的高度适应位图?

3

我有一个水平滚动视图,在其内部有一个ImageView。这个ImageView具有高宽比低的位图。

我想让位图填充水平滚动视图的高度,并且希望从左到右滚动该位图。

我尝试使用了以下代码,但不起作用。它在左侧和右侧创建两个黑色的空间。这些空间来自ImageView...所以...位图的宽度小于ImageView。

        HorizontalScrollView wvScroll = new HorizontalScrollView(this);
        wvScroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
        iv.setImageBitmap(Util.getRemoteImage("http://mywebsite.com/90.gif"));
        //iv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        iv.setScaleType(ScaleType.CENTER_INSIDE);
        iv.setBackgroundColor(Color.BLACK);
        wvScroll.addView(iv);
        wvScroll.setBackgroundColor(Color.GREEN);
        mainLayout.addView(wvScroll);

我做错了什么?我还尝试使用iv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));,但它不起作用,结果相同。

编辑:

我还尝试使用ScaleType.CENTER_CROP,但效果不好。由于位图的顶部和底部丢失了一些像素,因此位图的高度比ImageView要高。


如果视图比图像大,通常需要将android:adjustViewBoundssetAdjustViewBounds(boolean)设置为true,以使边界包裹图像内容。这样应该可以消除您看到的黑色空间。 - MH.
哦...不幸的是它不起作用了...现在我在位图的顶部和底部有黑色空白。 - Pableras84
正确,这表明您的图像比HorizontalScrollView的实际高度小,这意味着您想在运行时放大图像(我在问题中有点忽略了这个声明)。唯一启用放大的比例类型是FIT_XY,但为了使其正常工作,您需要将正确的尺寸设置为ImageView。换句话说:计算图像和ImageView应该是什么大小(保持纵横比等),并相应地调整布局参数。 - MH.
1个回答

0
如果我必须用最简单的方法来处理这个问题,我会将滚动视图的宽度设置为屏幕宽度。高度并不那么重要,因为您假设高度将适合于屏幕(至少这是我从您的问题中了解到的)。
据我所记得,滚动视图将滚动任何大于实际屏幕或大于其给定的指定滚动宽度或滚动高度的任何内容。 这可能会帮助您开始获取可尊重的屏幕尺寸 -Get Screen width and height 当然,由于不同的设备具有不同的屏幕尺寸 - 您必须以“编程”的方式进行此操作。
这种实现方式对您是否有效?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接