在scrollview中设置相同的图像大小:从资源加载

时间:2013-12-16 11:50:48

标签: android

enter image description here我从资源加载图像,并在滚动视图中显示它们,分别在水平和垂直视图中显示。但图像大小不相等。它们看起来不同而且很笨拙,如图的左侧所示。我希望他们都有相同的尺寸。我怎么得到这个?这是我的代码:

XML:
   <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
                    <ScrollView
                android:id="@+id/scrollViewlay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
                  <LinearLayout
                    android:layout_width="100dp"
                    android:layout_height="67dp"
                    android:orientation="vertical"
                    android:id="@+id/imagesView" >

                </LinearLayout>

                        </ScrollView>
                </LinearLayout>

爪哇:

    if(((LinearLayout) scrollV).getChildCount() > 0){ 
                    ((LinearLayout) scrollV).removeAllViews(); 
                }
                for(int j=0;j<images[(Integer) v.getTag()].length;j++){


                      try {
                       Bitmap bm = getBitmapFromAsset(images[(Integer) v.getTag()][j]);
                       ImageView image = new ImageView(PhotoView.this);
                       image.setImageBitmap(bm);

                       LinearLayout.LayoutParams layoutParams  = new    
                                 LinearLayout.LayoutParams(133, 89);
                       if(j==0){
                       layoutParams.setMargins(0, 2, 0, 2);
                       }
                       else{

                           layoutParams.setMargins(0,0 ,0 , 2);
                       }
                        image.setLayoutParams(layoutParams);

                       scrollV.addView(image);

                      } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        }


                }
private Bitmap getBitmapFromAsset(String strName) throws IOException
{
    AssetManager assetManager =getAssets();
    InputStream istr = assetManager.open(strName);
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    return bitmap;
 }

2 个答案:

答案 0 :(得分:2)

image.setScaleType(ImageView.ScaleType.FIT_XY);

最终

image.setScaleType(ImageView.ScaleType.CENTER_CROP);

问题是在第一种情况下,不会保持纵横比。 在第二种情况下,可以裁剪一些图像。

但它们应该具有相同的大小

答案 1 :(得分:1)

您可以使用以下方式设置图像比例:

image.setScaleType(ImageView.ScaleType.FIT_XY)

但是,我建议不要首先使用不同大小的图像资源,如果最终你想要统一显示它们。使用上面的缩放代码会使一些图像看起来扭曲。最好的方法是,耐心地为hdmi,xdpi,ldpi和mdpi屏幕类型设计资源,并在每个屏幕类型的自己的文件夹中存储资源。此外,使用Android SDK附带的9-patch工具在使用之前预先扩展资源。这减少了资源的内存影响,当缩放不同的屏幕尺寸时,它们不会被扭曲。

我知道完成所有资源设计工作需要时间,但是为不同屏幕提供的媒体质量值得付出努力。