2013-05-29 18 views
0

我有一個適配器到ListViewImageView s的列表。我正在使用一段時間來使圖像變爲圖像視圖,以便我可以拍攝較小的圖像並在屏幕上使它們變大,但ImageView通常只使用wrap_content,這是一個問題,因爲圖像只顯示爲正常的寬度和高度。有什麼辦法可以在繪製視圖之前設置視圖的高度和寬度,因爲在這種情況下,繪製後我無法控制視圖。這裏是我的最佳方法:在繪製ListView適配器之前設置ImageView寬度和高度

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    String currentImage = getItem(position); 
    ScaleType scaleType = ScaleType.FIT_CENTER; 
    float screenWidth = parent.getResources().getDisplayMetrics().widthPixels; 

    if (convertView == null) { 
     convertView = new ImageView(parent.getContext()); 
    } 
    //   WHAT I WOULD LIKE TO BE ABLE TO DO, but this returns null pointer exception 
//  convertView.getLayoutParams().width = (int) screenWidth; 
//  convertView.getLayoutParams().height = (int) ((float)(screenWidth/currentImage.getWidth())*currentImage.getHeight()); 

    ((ImageView) convertView).setScaleType(scaleType); 
    ((ImageView) convertView).setImageBitmap(MainActivity.cache.getBitmap(currentImage)); 
    return convertView; 
} 
+0

使用setLayoutParams。請參閱http://stackoverflow.com/a/2965807/112381。 – dannyroa

回答

0

那麼像someView.setHeight() and someView.setWidth()怎麼樣?或者someView.setLayoutParams()?您可以將其中的任何一個添加到覆蓋的getView()回調中,並且它應該處理您的問題。

你也可以Create a Custom View並重寫類似getMeasuredWidthAndState()的東西。 (我認爲這是正確的方法之一,但我不是百分百肯定的)。您可以創建一個width類變量和一個height類變量,以使您的自定義ImageView的所有實例都可以使用。然而,如果你只是想設置佈局的寬度和高度,那可能有點多。

相關問題