android ImageView adjustViewBounds 不工作。空格

android ImageView adjustViewBounds not working. Whitespace

我遇到这个问题,当我 运行 应用程序时,我在图像视图的顶部和下方出现不需要的白色 space。

我尝试过使用 adjustViewBounds 和不同的缩放类型,问题是我想保留我的图片,完全原样,但只是删除白色space。

Imageviews 在我的 java 代码中更改为 src 图片,我将图片下载到手机 activity,然后将图像设置为下载的位图。

这是一张它在我的模拟器上的外观图片,有一个白色的全屏space,直到您通过向下滚动 ScrollView 到达下一个 imageView。

在这里你可以看到我的 XML 代码。 TouchImageView 只是一种可缩放类型的 imageView。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none"
android:fillViewport="true" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tVInformation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="TextView"
            android:visibility="gone" />

        <com.fluffow.csgosmokes.TouchImageView
            android:id="@+id/iVsmoke1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="centerInside"
            android:src="@drawable/ic_launcher" />

        <com.fluffow.csgosmokes.TouchImageView
            android:id="@+id/iVsmoke2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="centerInside"
            android:src="@drawable/ic_launcher" />

        <com.fluffow.csgosmokes.TouchImageView
            android:id="@+id/iVsmoke3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="centerInside"
            android:src="@drawable/ic_launcher" />

        <com.fluffow.csgosmokes.TouchImageView
            android:id="@+id/iVsmoke4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="centerInside"
            android:src="@drawable/ic_launcher"
            android:visibility="invisible" />
    </LinearLayout>
</RelativeLayout>

一件有趣的事是每个图像视图彼此之间恰好有一个 android 模拟器屏幕 "whitespace",如果我给一个图像视图背景着色一半的白色 space 将是那种颜色,下半部分来自下一个图像视图。它在 imageview 之前和之后得到相同数量的白色space。

您使用的是 centerInside 刻度类型,它的实际作用是

Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or less than the corresponding dimension of the view (minus padding). The image is then centered in the view

现在你的身高是 wrap_content 所以它会在保持纵横比的同时缩放,一旦它达到任一维度,它就不会缩放超过那个。如果你想移除白色 space 移除 scaleType

从您的 TouchImageView 中删除 android:scaleType="centerInside",并且应删除连续 TouchImageView 之间的空格。

尝试删除 adjustViewBounds。如果您的位图宽度小于屏幕宽度,这可能会在两侧产生空白,但否则效果很好。

问题出在 touchImageView。它创建了一个无法删除的 whitespace