1
我在試圖建立 layoutparams問題

ImageView編程方式創建:錯誤佈局PARAMS設置ImageView的

imageView.setLayoutParams(new LinearLayout.LayoutParams(gallerySize.x, gallerySize.y)); 

的ImageView的是LinearLayout裏面,我覺得應該工作,但我得到這個錯誤:

09-30 10:33:24.450: ERROR/AndroidRuntime(5418): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams 

也許,事實證明這ImageView的活動被配置爲使用不同的佈局縱向和橫向視圖(我用這與XML佈局的佈局土地文件夾內的不同副本)。當它在縱向視圖不執行有問題的代碼行,而不是我執行以下行:

imageView.setLayoutParams(new Gallery.LayoutParams(gallerySize.x, gallerySize.y)); 

我試圖保持這一行不變,但後來我得到的錯誤:

09-30 10:49:47.450: ERROR/AndroidRuntime(5760): java.lang.ClassCastException: android.widget.Gallery$LayoutParams 

縱向和橫向佈局的主要區別在於縱向使用垂直方向的LinearLayout並且有一個Gallery小部件(使用該圖像視圖),而有問題的橫向使用水平方向,而ListView而不是Gallery

我很善良迷失在這裏,任何提示將不勝感激。


EDITED

的ImageView的是在這個類實現:

public class ImageAdapter extends BaseAdapter { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView = new ImageView(mContext); 

      Bitmap temp = BitmapFactory.decodeFile(appFolder+"/"+imagesPath[position]); 
      //productImages[position] = temp; 

      imageView.setImageBitmap(temp); 

      if(landscape) 
       imageView.setLayoutParams(new LinearLayout.LayoutParams(gallerySize.x, gallerySize.y)); 
      else 
       imageView.setLayoutParams(new Gallery.LayoutParams(gallerySize.x, gallerySize.y)); 


      imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
      imageView.setBackgroundResource(mGalleryItemBackground); 

      return imageView; 
     } 
    } 

而且ImageAdapter例如用在這裏:

public onCreate(...) { 
     ... 
     if(!landscape) { 
     Gallery gallery = (Gallery) findViewById(R.infoproduto.gallery); 
     gallery.setAdapter(new ImageAdapter(this)); 
     gallery.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView parent, View v, int position, long id) { 
        setSelectedImage(position); 
       } 
      }); 
     } 
     else { 
     ListView galleryLView = (ListView) findViewById(R.infoproduto.galleryLView); 
     galleryLView.setAdapter(new ImageAdapter(this)); 
     galleryLView.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView parent, View v, int position, long id) { 
        setSelectedImage(position); 
       } 
      }); 
     } 
    } 
+0

是否需要使用LayoutParams更改圖像的大小 – surendra

+0

PLease show code添加imageview的位置。 – Ronnie

+0

@surendra是的,如果我不使用固定大小的圖片將非常適合「畫廊」。 – IPValverde

回答

1

好吧,我想出的解決方案,它非常明顯!

的ImageView的用於內部ImageAdapter,這ImageAdapter是在ListView的情況下設置好的如適配器:

ListView galleryLView = (ListView) findViewById(R.infoproduto.galleryLView); 
    galleryLView.setAdapter(new ImageAdapter(this)); 

所以除了使用LinearLayout.LayoutParams(這是在我的XML文件中唯一的佈局),我用ListView.LayoutParams和它完美的作品!