Android列表视图图像不适合屏幕宽度

时间:2012-05-31 06:51:10

标签: android listview android-layout imageview

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

(由于垃圾邮件政策,我无法在此处发布我的屏幕截图。请点击以下链接查看屏幕截图。) http://www.sundancepost.com/ivue/screen/screen1.jpg

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

以下是我想要的结果:

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

这是我的布局代码。

featured_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>

featured_list:

<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 设置有关。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

您可以使用

在图像视图中设置图像

1)android:scaleType="fitXY"

2)android:scaleType="centerCrop"

在图片视图中使用任何一个。它给了我完美的结果,因为我想要。

答案 2 :(得分:0)

我认为唯一可以帮助的是使用其他程序调整图像大小。问题是,在xml或代码中设置图像大小时,图像无法以图像方式进行水平或垂直方向裁剪。