Я работаю над приложением, которое использует расширяемый просмотр списка в качестве своего родителя, и в каждом дочернем представлении есть представление горизонтальной прокрутки, которое загружается динамически на основе информации БД.
Все кнопки в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 мс, чтобы видеть, должен ли форвард быть видимым и затем выходить.Это не красиво, но работает без сбоев приложения, так что я счастлив.Извините за плохой вопрос!