2013-12-16 82 views
0

enter image description here我從資產中加載圖像,並在滾動視圖中顯示它們,分別在水平和垂直視圖中顯示。但圖像大小不相等。如圖左側所示,它們看起來不同且尷尬。我希望他們都有相同的尺寸。我怎麼得到這個?這裏是我的代碼:在scrollview中設置相同大小的圖像:從資產加載

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> 

的Java:

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; 
} 
+0

如果您未設置圖像的任何高度或寬度,則會自動將其自身調整爲原始大小。嘗試給出一些高度和寬度值,或者設置它們以填充它們的容器。 –

回答

2

嘗試

image.setScaleType(ImageView.ScaleType.FIT_XY); 

最終

image.setScaleType(ImageView.ScaleType.CENTER_CROP); 

的問題是在第一種情況下,縱橫比不會蜂保持。 在第二種情況下,可以裁剪一些圖像。

但是他們應該具有相同的大小

1

您可以通過設置圖像比例:

image.setScaleType(ImageView.ScaleType.FIT_XY)

不過,我建議不要在第一次使用不同大小的圖像資源地方,如果最終你想統一顯示他們。使用上述縮放代碼會使一些圖像看起來失真。最好的方法是耐心地爲hdmi,xdpi,ldpi和mdpi屏幕類型設計資源,並將每種屏幕類型的資源存儲在它自己的文件夾中。此外,使用Android SDK附帶的9修補工具可在使用前預先縮放資源。這減少了資源對內存的影響,並且在縮放不同的屏幕尺寸時,它們不會失真。

我知道完成所有這些資源設計工作需要時間,但值得爲不同屏幕提供的媒體質量付出努力。

相關問題