在API 30中,WebView内部的滚动行为发生了变化,并且默认情况下WebView无法滚动。要解决这个问题,您可以通过以下方法启用WebView的滚动功能:
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;
public class FixedWebView extends WebView {
public FixedWebView(Context context) {
super(context);
}
public FixedWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FixedWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getPointerCount() == 1) {
getParent().requestDisallowInterceptTouchEvent(false);
} else {
getParent().requestDisallowInterceptTouchEvent(true);
}
return super.onTouchEvent(event);
}
}
FixedWebView webView = findViewById(R.id.webview);
webView.setVerticalScrollBarEnabled(true);
然后您就可以在API 30中使用WebView并实现滚动功能了。
上一篇:API 30中的透明状态栏