Android-галерея без прокрутки по клику - PullRequest
4 голосов
/ 24 сентября 2011

По умолчанию кажется, что при щелчке элемента галереи галерея автоматически прокручивается, чтобы отцентрировать элемент, по которому щелкнули. Как я могу переопределить это поведение? Я не хочу, чтобы при щелчке галерея прокручивалась по центру, я хочу, чтобы она оставалась там, где она есть.

Ответы [ 6 ]

8 голосов
/ 10 апреля 2012

Я думаю, что это правильное решение:

    @Override
public boolean onSingleTapUp(final MotionEvent e) {     
    boolean handled = super.onSingleTapUp(e);
    onDown(e);

    return handled;
}
2 голосов
/ 02 марта 2012

Я думаю, это то, что вы ищете.

Сначала создайте класс, который выходит из Gallery, а затем переопределите метод onSingleTapUp :

@Override
public boolean onSingleTapUp(final MotionEvent e) {
    final OnItemClickListener listener = getOnItemClickListener();
    final View selectedView = getSelectedView();

    final float tapX = e.getRawX();
    final float tapY = e.getRawY();

    if ((selectedView != null) && (listener != null)
            && (tapX >= selectedView.getLeft()) && (tapX <= selectedView.getRight())
            && (tapY >= selectedView.getTop()) && (tapY <= selectedView.getBottom())) {

        final int selectedPosition = getSelectedItemPosition();

        listener.onItemClick(this, selectedView, selectedPosition, selectedPosition);
    }

    return true;
}
1 голос
/ 24 сентября 2011

Я никогда раньше не использовал галерею (на самом деле мне пришлось посмотреть представление YouTube, чтобы сначала увидеть его визуальный эффект; -)

Так что я покопался в исходном коде галереи, и мне кажется, что они имеютпривязка выбора довольно тяжела к позиционированию, так что вам придется переопределить класс и сделать тяжелый хакерский код, возможно, даже размышление, чтобы достичь своей цели.Я даже не могу сказать, добьетесь ли вы успеха.

Это не решение, а подсказка, чего вам следует ожидать, если вы хотите это осознать; -)

0 голосов
/ 16 июля 2012

К сожалению, у меня пока нет возможности комментировать посты других, но для тех, кто нашел этот вопрос, но имел проблемы, учтите, что если вы создаете собственную галерею, которая переопределяет метод onSingleTap (как рекомендует Ohgema), вам необходимо переопределить конструктор , который принимает Context и AttributeSet.

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

Я не пробовал это ... но вы можете попробовать следующее:

В onItemClickListener.onItemClick() определите текущую выбранную позицию, используя Gallery.getSelectedItemPosition(), а затем установите позицию, используя Gallery.setSelection(int position). Я не знаю, сработает ли это или нет, но вы можете дать ему шанс.

Существует также OnItemSelectedListener, который вы можете попробовать использовать.

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

В галерее есть способ переопределить это.

 gallery.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

}

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