儿童画廊与setScaleX / Y一起使用

时间:2011-08-15 10:37:59

标签: android android-layout

我有一个使用自定义视图作为元素的自定义适配器。我需要将这些元素默认缩放70%。 问题是画廊表现得像100%大小,30%透明填充=元素之间的间距很大。为了更好地理解,我附加了两个图像,其中元素缩放到100%和70%。

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()中设置比例而没有运气。在适配器中我只是将这个类用于gallery元素:

@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.

感谢任何提示或评论。

2 个答案:

答案 0 :(得分:0)

看起来没有办法“欺骗”Gallery以缩放的宽度来测量缩放的单元格。所以我只使用负间距 - setSpacing(-100); 可能有一种方法可以覆盖MagazineCell类上的onMeasure方法并计算缩放宽度。但我没试过。

答案 1 :(得分:0)


    this.setScaleX(0.7F);
    this.setScaleY(0.7F);
添加
    this.setPivotX(0);
    this.setPivotY(0);