天天看點

android webview禁止上下滑動,Android中解決WebView上下滑動監聽問題

有些時候我們需要監聽webview的滾動事件,但WebView沒有直接監聽滑動的方法,看WebView的源碼則會發現有一個protected void onScrollChanged(int l,int t,int oldl,int oldt)方法。

這個方法。是受到保護的是以我們無法直接使用,是以我們寫一個加強的WebView,重寫onScrollChanged方法并利用接口回調。

public class NewWebView extends WebView{

private OnScrollChangeListener mOnScrollChangeListener;

public NewWebView(Context context,AttributeSet attrs) {

super(context,attrs);

}

@Override

protected void onScrollChanged(int l,int oldt) {

super.onScrollChanged(l,t,oldl,oldt);

// webview的高度

float webcontent = getContentHeight() * getScale();

// 目前webview的高度

float webnow = getHeight() + getScrollY();

if (Math.abs(webcontent - webnow) < 1) {

//處于底端

mOnScrollChangeListener.onPageEnd(l,oldt);

} else if (getScrollY() == 0) {

//處于頂端

mOnScrollChangeListener.onPageTop(l,oldt);

} else {

mOnScrollChangeListener.onScrollChanged(l,oldt);

}

}

public void setOnScrollChangeListener(OnScrollChangeListener listener) {

this.mOnScrollChangeListener = listener;

}

public interface OnScrollChangeListener {

public void onPageEnd(int l,int oldt);

public void onPageTop(int l,int oldt);

public void onScrollChanged(int l,int oldt);

}

}

使用:

public class NewsActivity extends AppCompatActivity {

private NewsWebView mWebView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_news);

mWebView = (NewsWebView) findViewById(R.id.web_view);

mWebView.setOnScrollChangeListener(new NewsWebView.OnScrollChangeListener() {

@Override

public void onPageEnd(int l,int oldt) {

Logs.d("已經到達地端");

}

@Override

public void onPageTop(int l,int oldt) {

Logs.d("已經到達頂端");

}

@Override

public void onScrollChanged(int l,int oldt) {

}

});

以上就是本文的全部内容,希望對大家的學習有所幫助,也希望大家多多支援程式設計小技巧。

總結

如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。

本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。

小編個人微信号 jb51ccc

喜歡與人分享程式設計技術與工作經驗,歡迎加入程式設計之家官方交流群!