gpt4 book ai didi

android - 为什么使用 ViewDragHelper 拖动的 View 会重置到其在 layout() 上的原始位置?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:35 26 4
gpt4 key购买 nike

我正在我的游戏中实现自定义可扩展操作栏。我正在使用 ViewDragHelper处理条形 View 的拖动和 throw ,它包含在 LinearLayout 中,我子类化以附加 ViewDragHelper。

以下链接对实现此目标有很大帮助:

我遇到的唯一问题是我父级 LinearLayout 的 layout() 的行为:每次调用 layout()/onLayout() ,子级可拖动/可扩展操作栏被重置到其原始位置(XML 布局中设置的位置)。

这是为什么?

(根据我的经验,layout() 永远不会弄乱已经移动的 View 的位置)

最佳答案

我使用的解决方法是在每次拖动操作后记录 View 的偏移量,并在 onLayout() 中重新应用它们,例如

View mVdhView;
int mVdhXOffset;
int mVdhYOffset;

@Override
public void computeScroll() {
if (dragHelper.continueSettling(true)) {
postInvalidateOnAnimation();
} else {
mVdhXOffset = mVdhView.getLeft();
mVdhYOffset = mVdhView.getTop();
}
}

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);

// Reapply VDH offsets
mVdhView.offsetLeftAndRight(mVdhXOffset);
mVdhView.offsetTopAndBottom(mVdhYOffset);
}

关于android - 为什么使用 ViewDragHelper 拖动的 View 会重置到其在 layout() 上的原始位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865291/

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