Исправить элемент в ObservableScrollView Android
Я пытаюсь исправить элемент в ScrollView, когда он ударил ActionBar. Он останавливается правильно, но когда я возвращаюсь в основную позицию прокрутки, я получаю случайное поле над макетом (скриншот 3). (Поле в скриншоте 2 не является ошибкой)
Мой слушатель ObservableScrollView
if(t > stackHeight && !animationActionBarstackedBg){
animationActionBarstackedBg = true;
} else if (t < stackHeight && animationActionBarstackedBg){
animationActionBarstackedBg = false;
}
frameImg.setPadding(frameImg.getPaddingLeft(), t/2, frameImg.getPaddingRight(), frameImg.getPaddingBottom());
if(animationActionBarstackedBg){
panelTitleContainer.setPadding(panelTitleContainer.getPaddingLeft(), t-stackHeight, panelTitleContainer.getPaddingRight(), panelTitleContainer.getPaddingBottom());
}
Где t - ScrollY, stackHeight - высота изображения, frameImg - это FrameLayout, содержащий ImageView (для создания анимации, подобной Google I/O 2014), а panelTitleContainer - это макет с коричневым макетом.
Есть ли способ исправить элемент в виде прокрутки?
1 ответ
Решение
Решено с помощью setTranslationY()
if(t > stackHeight && !animationActionBarstackedBg){
animationActionBarstackedBg = true;
} else if (t < stackHeight && animationActionBarstackedBg){
animationActionBarstackedBg = false;
}
frameImg.setTranslationY(svMain.getScrollY() * 0.5f);
if(!animationActionBarstackedBg){
panelTitleContainer.setTranslationY(0);
} else {
panelTitleContainer.setTranslationY(svMain.getScrollY() - stackHeight);
}