Как сделать галерею "вне центра" в Android - PullRequest
0 голосов
/ 22 ноября 2011

На самом деле я получил галерею, которая показывает мои рисунки и показывает элемент, выбранный в центре экрана.

Я бы хотел, чтобы выбранный элемент был «смещен от центра» (например, позиционирован на 50 градусов слева).

Я попытался добавить отступы для вида и галереи. Я также проверил, что гравитация моей галереи не была установлена ​​в "центре"

Кстати, я полагаю, что обычным поведением галереи является показ выбранного элемента в центре экрана.

Есть ли какие-либо возможные способы смещения позиции выбранного элемента?

Большое спасибо! При необходимости я могу добавить свой код.

1 Ответ

1 голос
/ 29 ноября 2011

Я наконец получил ответ.

Во-первых, вы должны установить ScrollX на определенное значение, соответствующее интервалу пикселей, который вы хотите иметь.

Но проблема этого единственного решения состоит в том, что для выбора элемента вам нужно щелкнуть центр экрана, что несправедливо.

Во-вторых, вы должны переопределить Галерею, реализовать этот OnDoubleTapListener и добавить его пользовательский слушатель (называемый, например, onItemTapListener), например:

public void setOnTapItemMenuListener(OnTapItemMenuListener listener) {
     onTapItemMenuListener = listener;
}

Я сделал такой интерфейс для реализации моего нового слушателя:

public interface OnTapItemMenuListener {
    public abstract void onTap(int intPosition);
}

И в случае события «onSingleTapConfirmed», реализованного из-за реализации OnDoubleTapListener, вы перехватываете событие и проверяете, что event.getX () находится в определенной позиции, например, так:

if (event.getX() / intWidth > 0.20f && event.getX() / intWidth < 0.45f) {
     Log.i("TAG", "onSingleTapConfirmed on the right area, we launch onTap for the Listener");
     onTapItemMenuListener.onTap(this.getSelectedItemPosition());
} else {
     Log.i("TAG", "onSingleTapConfirmed on the wrong area, we don't launch onTap for the Listener");
}

Где intWidth - ширина в пикселях текущего экрана.

...