Код для определения, когда размещать стрелки для горизонтального просмотра - PullRequest
0 голосов
/ 21 февраля 2012

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

Все кнопки вHSV - это составные изображения, добавляемые динамически с использованием реализации, очень похожей на отложенную загрузку в просмотре списка .Я смог добавить стрелки к своему ВПГ, но теперь я хотел бы сделать еще один шаг вперед и отображать стрелки только при наличии достаточного количества элементов, чтобы заполнить пространство, например, если отображается только один элемент, тострелки не должны отображаться.

Поскольку список начинается с начала, я могу скрыть стрелку «назад» по умолчанию, но я не уверен, где проверить, показывать или нет стрелку «вперед».

        public Object getGroup(int groupPosition) {
        Object o;
        o = groups.get(groupPosition).getName();

        if(relativeLayout != null && horizontalScrollView != null && forward != null) {
            if(horizontalScrollView.getWidth() < relativeLayout.getWidth()) {
                forward.setVisibility(View.VISIBLE);
            } else {
                forward.setVisibility(View.INVISIBLE);
            }
        }

        // }
        return o;
    }

Первоначально я использовал этот тест в getChildView, где было заполнено HorizontalScrollView, но это произошло слишком рано, и бот HSV и относительное расположение отображали ширину нуля.

Сейчас я тестирую его в getGroup, потому что он вызывается несколько раз ПОСЛЕ того, как дочернее представление начало загружаться, но я думаю, что это работает только потому, что в моем расширяемом списке много групп.Если бы у меня была одна группа, у меня все еще была бы та же проблема.

Есть ли идеальное место, чтобы проверить, является ли дочерний макет больше, чем горизонтальный просмотр?

Обновление: я установил таймер, который проверяет каждые 1000 мс, чтобы видеть, должен ли форвард быть видимым и затем выходить.Это не красиво, но работает без сбоев приложения, так что я счастлив.Извините за плохой вопрос!

1 Ответ

0 голосов
/ 13 июня 2012

Я проверяю положение прокрутки с помощью события onTouch :

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