gpt4 book ai didi

ListView 内的 Android WebView

转载 作者:行者123 更新时间:2023-11-30 02:44:31 26 4
gpt4 key购买 nike

我在 ListView 中有一个 WebView。一切正常,除了我无法阻止 ListView 向上/向下滚动,如果 WebView 处理滚动手势。

我知道,我可以使用 OnTouchListener 中的以下代码完全阻止 ListView 的滚动

@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
webView.getParent().requestDisallowInterceptTouchEvent(false);
} else {
webView.getParent().requestDisallowInterceptTouchEvent(true);
}
}

但我只想阻止它,而 WebView 没有处理滚动/触摸手势。

例如。我有两个 HTML 页面。一个显示位置的 360 度 View 。这个 WebView 应该完全阻止父级的滚动,而第二个 WebView 只是文本。该页面不会处理触摸事件,因此父 ListView 可以滚动。

PS:HTML不是我自己写的,不能修改。

最佳答案

紧随其后的是@mars3142,下面的代码显示并允许滚动得更像浏览器中显示的网页。

public class InnerScrollWebView extends WebView {

private Boolean enableScroll = true;

public InnerScrollWebView(Context context, AttributeSet attrs){
super(context, attrs);
getSettings().setDomStorageEnabled(true);
getSettings().setJavaScriptEnabled(true);
}

@Override
public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
enableScroll = true;
}
if (getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(enableScroll);
}
return super.onTouchEvent(event);
}

@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
if (getParent() != null) {
enableScroll = false;
}
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
}
}

关于ListView 内的 Android WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308184/

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