gpt4 book ai didi

android - 在 ViewPager 滚动上翻译 FloatingActionButton 时对 setTranslationX() 感到困惑

转载 作者:行者123 更新时间:2023-11-30 01:05:12 25 4
gpt4 key购买 nike

我在 ViewPager 中有一些选项卡。除最后一个选项卡外,每个选项卡都在右下角显示 FloatingActionButton。最后一个选项卡应该在底部中心显示它,在滚动到此选项卡时翻译它之后。当滚动离开此选项卡时,FloatingActionButton 转换回其右下角位置。我正在实现一个解决方案,并惊讶地发现这或多或少就是全部:

mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// One page away from last page
if (position == mAdapter.getCount() - 2) {
mFab.setTranslationX(positionOffsetPixels / -2f);
}
}
}

当我滚动到最后一个选项卡时,我们将 FAB 平移到其当前位置的左侧,因为传递给 setTranslationX() 的参数是负数。现在,这就是我感到困惑的地方。当我向后滚动一页时,FAB 会根据需要向右平移——但这怎么可能呢? setTranslationX() 的参数仍然是负数。我预计 FAB 会向左移动。

最佳答案

当您从 mAdapter.getCount() - 2 位置向前滚动时,positionOffsetPixels 的值将增加正数,而 positionOffsetPixels/- 2f 将增加负数,因此 FAB 将按预期向左平移。

来自documentation 位置:

Position index of the first page currently being displayed.

这意味着当向后滚动时,偏移值将相对于您正在滚动到的页面,而不是您正在滚动的页面。

当您从 mAdapter.getCount() - 1 向后滚动时,position 的值为 mAdapter.getCount() - 2(这是您要滚动到的位置)并且 positionOffsetPixels 的值将递减到 0 的正数。

0/-2f == 0,因此最终将调用 mFab.setTranslationX(0),将 FAB 返回到其原始位置。

关于android - 在 ViewPager 滚动上翻译 FloatingActionButton 时对 setTranslationX() 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com