我是Android的新手。
我想知道用户滚动页面的位置。当网页上的某个点出现在屏幕底部时,我想触发一个事件。但是这段代码导致异常。我知道WebView从View继承了getScrollY()。我没有正确实施吗?
提前致谢。
public class Scroll extends Activity {
public WebView webview;
public float yPos;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webview = new WebView(this);
setContentView(webview);
webview.loadUrl("file:///android_asset/Scroll.html");
}
public boolean onTouchEvent(final MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
yPos = webview.getScrollY();
Log.v("Scroll", "yPos = " + yPos);
}
return false;
}
}
答案 0 :(得分:2)
例外是什么? 以下是我的一个应用程序的WebView屏幕高度注释:
// current position (top) = getScrollY();
// max position = getContentHeight();
// screen height = getHeight();
答案 1 :(得分:2)
您正在OnCreate()方法中的两个位置编写WebView webview;
。
简单地写
webview = new WebView(this);
代替WebView webview = new WebView(this);
这样你就可以解决空指针问题。
答案 2 :(得分:0)
WebView有一个获取其内容高度的方法,我在我的解决方案中使用了该方法:
webView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View view, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
WebView webView = (WebView) view;
float contentHeight = webView.getContentHeight() * webView.getScaleY();
float total = contentHeight * getResources().getDisplayMetrics().density - view.getHeight();
// on some devices just 1dp was missing to the bottom when scroll stopped, so we subtract it to reach 1
float percent = Math.min(scrollY / (total - getResources().getDisplayMetrics().density), 1);
Log.d("SCROLL", "Percentage: " + percent);
if (scrollY >= total - 1) {
Log.d("SCROLL", "Reached bottom");
}
}
}
留意:
答案 3 :(得分:0)
适用于使用Ionic框架的人。
从Webview中获取scrollTop
要获取webView的scrollTop,请使用:
javascript->
var scroller = $('#_ionic_content')[0].firstChild.offsetParent;
var scrollTop_pos = scroller.scrollTop;
这对我有用。
答案 4 :(得分:0)
这对我有用,我正在计算基本滚动位置。
mainWebView.setOnScrollChangeListener { view, scrollX, scrollY, oldScrollX, oldScrollY ->
if (scrollY > 800) {
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
toolbar.logo = resources.getDrawable(R.mipmap.ic_launcher)
} else {
supportActionBar!!.setDisplayHomeAsUpEnabled(false)
toolbar.logo = null
}
Log.e(TAG, "initializeWeb: $scrollY")
}