1

我有这个列表视图,其中的图像视图不适合屏幕宽度,即使位图的大小大于屏幕大小。这是我得到的结果:

(由于垃圾邮件政策,我不能在这里发布我的截图。请点击下面的链接查看截图。) http://www.sundancepost.com/ivue/screen/screen1.jpg

如上面屏幕中的红色框所示,列表不适合屏幕的宽度。

以下是我想要的结果:

http://www.sundancepost.com/ivue/screen/screen2.jpg

这是我的布局代码。

features_listrow.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:orientation="vertical">    

<ImageView
   android:id="@+id/banner"        
   android:layout_width="fill_parent"       
   android:layout_height="wrap_content"
   android:adjustViewBounds="true"
   android:src="@drawable/ampersand_banner"/>

</RelativeLayout>

精选列表:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:smoothScrollbar="true" 
    >

</ListView>

</LinearLayout>

我相信我已经为两个布局文件正确设置了 layout_width 和 layout_height。我认为这与运行时的android:adjustViewBounds设置有关。有人能帮帮我吗?

4

3 回答 3

2

我终于发现了问题所在。图像的缩放发生在http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/中的ImageLoader.class

所以,当我注释掉代码的缩放部分时,一切都恢复正常了。

这是代码:

private Bitmap decodeFile(File f){
    try {
        //decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        //Find the correct scale value. It should be the power of 2.
       // final int REQUIRED_SIZE=100;
       // int width_tmp=o.outWidth, height_tmp=o.outHeight;
        int scale=1;
      //while(true){
        //if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
        //break;
        //width_tmp/=2;
        //height_tmp/=2;
        //scale*=2;
       //}

        //decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;
        return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    } catch (FileNotFoundException e) {}
    return null;
}
于 2012-05-31T15:47:34.140 回答
1

您可以使用在图像视图中设置图像

1)android:scaleType="fitXY"

或者

2)android:scaleType="centerCrop"

在您的图像视图中使用任何一种。它给了我想要的完美结果。

于 2015-05-04T07:58:05.577 回答
0

我认为唯一可以帮助的就是使用其他程序调整图像大小。问题是图像不能仅在水平或垂直边上以编程方式裁剪,在 xml 或代码中设置图像大小时它总是这样做。

于 2012-05-31T07:21:30.233 回答