2012-09-07 148 views
0

我有一個框架佈局,它包含一個圖像視圖,當用戶按下下一個按鈕時(想象一個幻燈片),它應該更新它顯示的圖像。我想要在這個圖像視圖中放置的所有圖像具有相同的尺寸。活動開始時由imageview顯示的初始圖像位於res/drawable-hdpi目錄中,而其他圖像位於assets目錄中。問題是,我交換到imageview的圖像看起來比第一個圖像小,儘管所有這些圖像的大小相同。ImageView的尺寸大小不一樣ImageView

關於佈局參數,我的框架佈局的layout_width和layout_height設置爲wrap_content,imageview也是如此,我試着將scaleType參數設置爲每個可能的值,我仍然看到相同的結果。因此,除非存儲在res/drawable-hdpi和資產中的圖像以某種方式縮放,否則不應該發生此行爲。

那麼,當用戶在這些圖像中循環時,保留圖像視圖的尺寸的最佳方法是什麼?

這裏是我的XML的框架佈局&我的ImageView

<FrameLayout 
    android:id="@+id/coverLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" > 

    <ImageView 
    android:id="@+id/coverImageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="false" 
    android:scaleType="fitCenter" 
    android:src="@drawable/coverImage" /> 
</FrameLayout> 

下面是加載新的圖像進入我的ImageView我的代碼

_coverImageView = (ImageView) findViewById(R.id.coverImageView); 
... 
... 
if (loadNewImage) { 
     AssetManager assetMgr = getAssets(); 
     InputStream stream; 
     try { 
      stream = assetMgr.open("covers/" + _coverImageName); 
      Drawable coverDrawable = Drawable.createFromStream(stream, _coverImageName); 
      _coverImageView.setImageDrawable(coverDrawable); 
     } 
     catch (IOException ex) {       
      System.out.println(ex); 
     } 
} 
+1

您是否嘗試將framelayout設置爲靜態維度以查看它是否仍然存在? – VicVu

回答

2

所以,除非存儲在RES圖像/ drawable-hdpi和資產以某種方式縮放不同,這種行爲不應該發生。

這正是問題所在。 Android根據幾個規則縮放位圖,包括屏幕的密度(類)和位圖來自哪個資源文件夾。看到這個related question/answer。如果您希望資產和資源具有相同的行爲,則可以在drawable-nodpi而不是drawable-hdpi中放置初始封面圖片。