首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 動態新增 ImageView 到 LinearLayout 不顯示:檢查 Bitmap 是否有效

     編輯:程式設計綜合問答

現象

從網路下載 Bitmap 加入 ArrayList,迴圈建立 ImageView setImageBitmap 加入 LinearLayout,但圖片不顯示;換成 TextView 則正常。

排查步驟

  1. 驗證 Bitmap 尺寸:
    Bitmap image = BitmapFactory.decodeStream(...);
    Log.d("IMG", "w=" + image.getWidth() + " h=" + image.getHeight());
    if (image.getWidth() == 0 || image.getHeight() == 0) {
        // 下載失敗或解碼失敗,Bitmap 為空
    }
  2. 檢查 ImageView LayoutParams:
    ImageView iv = new ImageView(context);
    iv.setLayoutParams(new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT));
    iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
    iv.setImageBitmap(bitmap);
    linearLayout.addView(iv);
  3. 確認 LinearLayout 方向:垂直方向需 android:orientation="vertical",水平方向圖片可能超出螢幕。

常見原因

  • 網路圖片 URL 錯誤、需 Header、或回傳非圖片內容(HTML 錯誤頁)
  • BitmapFactory.decodeStream 回傳 null 但未判斷直接加入列表
  • 主執行緒進行網路下載導致 ANR(應用無回應),實際上應用異步下載框架(Glide, Picasso, Coil)

最佳實踐:使用圖片載入庫

// Glide 範例
Glide.with(context)
    .load(url)
    .into(imageView); // 自動處理下載、快取、生命週期、佔位圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved