我有一個帶有4列和n行的GridView。每個單元格只是一個ImageView。我的自定義適配器的getView()的代碼如下所示:ImageView Scale類型在GridView中不正確
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(1, 1, 1, 1);
//imageView.setAdjustViewBounds(true);
if(imageLoader != null) {
String url = randomImage();
imageView.setContentDescription(url);
imageLoader.DisplayImage(url, imageView);
}
return imageView;
}
的ImageLoader的會選擇一個隨機的網址,並在後臺,去把它拿來並相應更新ImageView的。這工作正常和丹迪。問題是生成的圖像似乎使用FIT_START的縮放類型而不是FIT_XY。我明確地將其設置爲FIT_XY,甚至在設置imageView的drawable的代碼中再次設置它...仍然不是FIT_XY,我很難過。想法?
編輯刪除對setAdjustViewBounds()的調用。
因爲您使用adjustViewBounds屬性重寫了該值。你真的*想要* FIT_XY嗎?我問,因爲這是一個極端的情況,你真的想要不成比例地拉伸。如果您希望圖像適合100x100以內,請改爲使用CENTER_CROP。 – kcoppock
啊,我在測試中加入了adjustViewBounds。拿出來,也改爲CENTER_CROP,我得到了同樣的結果。在我的情況下,FIT_XY可以,因爲我保證在縮放之前每個圖像都是300x300。所以,它仍然不能正確顯示...其他想法? – sjwoodr
FIT_XY會工作,是的,但FIT_CENTER或CENTER_CROP會有相同的結果,並確保不會因爲某些原因導致大小錯誤的圖像進入而中斷。您是否有截圖,瞭解發生了什麼? – kcoppock