0

ActionBar にヒットしたときに、ScrollView 内の項目を修正しようとしています。正しく停止しますが、メイン スクロール位置に戻ると、レイアウトの上にランダムな余白ができます (スクリーンショット 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 は ImageView を含む FrameLayout (Google I/O 2014 のようなアニメーションを作成するため)、panelTitleContainer は茶色のレイアウトを含むレイアウトです。

スクロール ビューでアイテムを修正する方法はありますか?

4

1 に答える 1

0

を使用して解決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);
}
于 2014-08-01T07:51:55.330 に答える