我必须创建一个与Chrome非常相似的应用程序。换句话说,我必须创建一个WebView,并在其顶部创建一个栏:
重要的(可能)是我无法修改显示的HTML。我已经想到的是我应该创建自己的类来扩展WebView并覆盖其中的onScrollChanged()
。这就是我设法写的:
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (flag) {
flag = false;
return;
}
View bar = getRootView().findViewById(R.id.bar);
if (bar != null) {
int difft = oldt - t;
float oldY = bar.getTranslationY();
float newY = Math.max(-bar.getHeight(), Math.min(0, bar.getTranslationY() + difft));
bar.setTranslationY(newY);
View layout = getRootView().findViewById(R.id.layout);
layout.setTranslationY(bar.getHeight() + newY);
flag = true;
if ((int) (newY - oldY) != 0) {
scrollBy(0, difft);
}
}
}
(布局是WebView所在的容器,而bar是顶部栏。我将两个视图放在RelativeLayout中)
而且,它几乎可以工作。差不多,因为它会导致一些闪烁,我不知道是什么问题。此外,它并没有解决问题#3(我实际上并不知道如何通过最简单的方式解决它,使用某种类型的动画,如在Chrome中 - 顺利向上移动)。