Галерея с setScaleX / Y на детей - PullRequest
1 голос
/ 15 августа 2011

У меня есть галерея, загружаемая пользовательским адаптером с использованием пользовательских представлений в качестве элементов. Мне нужно, чтобы эти элементы были масштабированы на 70% по умолчанию. Проблема в том, что галерея ведет себя так, как будто она имеет размер 100% с прозрачностью 30% = интервал между элементами просто большой. Для лучшего понимания я прикрепил два изображения с элементами, масштабированными до 100% и 70%.

Элементы масштабируются до 100%

Элементы масштабируются до 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;
}

Галерея не имеет специального кода. Я использую SDK 11 на Acer Iconia TAB A500 под управлением Android 3.1.

Спасибо за любые подсказки или комментарии.

Ответы [ 2 ]

0 голосов
/ 18 августа 2014

послеthis.setScaleX (0.7f);this.setScaleY (0.7f);добавлятьthis.setPivotX (0);this.setPivotY (0);

0 голосов
/ 15 сентября 2011

Похоже, что нет способа «обмануть» Галерею, чтобы измерить масштабированные ячейки с их масштабированной шириной.Поэтому я просто использовал отрицательный интервал - setSpacing (-100); Может быть способ переопределить метод onMeasure для класса MagazineCell и вычислить масштабированную ширину.Но я этого не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...