使用adjustViewBounds和scaleType后,ImageView的左侧和右侧仍会出现空白区域

时间:2015-06-24 04:34:29

标签: java android

我是一个新的android程序员。我想用PullToRefreshListView显示图像,但我发现ImageView的左侧和右侧都有空格。我尝试了一些解决方案" ImageView空白区域"包括使用adjustViewBounds="true"scaleType,但失败了。 以下代码是我的列表单元格布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="horizontal">

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

            <TextView
                android:id="@+id/location"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 />
            <LinearLayout 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <ImageView 
                    android:id="@+id/userPortrait"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:src="@drawable/ic_launcher"
                    />
                <TextView
                    android:id="@+id/userName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                     />
            </LinearLayout>
        </LinearLayout>
         <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                />
        <TextView
                android:id="@+id/timeAgo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20px"
                android:layout_marginRight="5px"
                 />


    </LinearLayout>


<!-- here is my imageControl -->
    <ImageView 
            android:id="@+id/imageUrl"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitCenter"
            android:adjustViewBounds="true"
        />


</LinearLayout>

图像来自服务器,因此我在imageView.setImageBitmap的代码中添加了图像源。 我也尝试使用imageView.setBackground(drawable),实际上左侧和右侧没有空格,但高度不正确,不依赖于宽高比。

任何人都可以帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果布局后ImageView的宽高比与图像本身的宽高比不同,则必须做出选择:

  • 如果您希望将整个图片放入ImageView留下一些空间(在您的情况下,左右),请使用android:scaleType="fitCenter"
  • 如果您要覆盖整个ImageView并裁剪图片(在您的情况下,在顶部和底部),请使用android:scaleType="cropCenter"
  • 如果您不希望有额外的空间或裁剪边,并且想要扭曲图像的纵横比以准确匹配ImageView尺寸,请使用android:scaleType="fitXY"

以下是android:adjustViewBounds="true"的工作原理:当ImageView“固定”的一个维度(例如match_parent240dp等)和另一个维度“灵活”时(例如wrap_content),设置android:adjustViewBounds="true"会使ImageView布局使wrap_content维度恰好与源图像的宽高比相匹配。

由于match_parent的两个维度都有ImageViewandroid:adjustViewBounds="true"不会产生任何影响。