2011-08-15 103 views
1

我有一個畫廊讓自定義適配器使用自定義視圖作爲元素。我需要這些元素默認縮放70%。 問題是,畫廊的行爲就像他們在100%的大小與30%透明填充=元素之間的間距只是很大。爲了更好地理解,我附加了兩個圖像,其中元素縮放爲100%和70%。帶有setScaleX/Y的兒童畫廊

Elements scaled to 100%

Elements scaled to 70%

我不能硬編碼setSpacing,因爲這會表現在不同的分辨率怪異。我嘗試setSpacing(0)沒有運氣。 我怎樣才能達到那個畫廊的行爲像元素很小(70%),而不是原始大小?

我通過添加setScaleX/Y至定製元素MagazineCell的延伸的RelativeLayout構造縮放元素:

public MagazineCell(Context context) { 
    super(context); 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    layout = (RelativeLayout) inflater.inflate(R.layout.mag_big, null); 
    addView(layout); 

    this.setScaleX(0.7f); 
    this.setScaleY(0.7f); 
} 

我還試圖設置在drawChild()沒有畫廊的規模運氣。在適配器中,我只是將這個類用於圖庫元素:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    MagazineCell cell; 
    position = getPosition(position); 

    if (null == convertView || convertView.getClass() != MagazineCell.class) { 
     cell = new MagazineCell(context); 
    } else { 
     cell = (MagazineCell) convertView; 
    } 

    return cell; 
} 

圖庫沒有特殊的代碼。我在運行Android 3.1的Acer Iconia TAB A500上使用SDK 11。

感謝您的任何提示或意見。

+0

我也遇到過這個問題。 –

回答

0

看起來像沒有辦法「哄騙」圖庫來衡量縮放寬度的縮放單元格。所以我只用了負距離 - setSpacing(-100);有可能通過覆蓋MagazineCell類上的onMeasure方法並計算縮放寬度。但我沒有嘗試這個。

0


之後 this.setScaleX(0.7f);
this.setScaleY(0.7f);
add
this.setPivotX(0);
this.setPivotY(0);