android - 在 Viewpager 中滚动 Webview

标签 android webview scroll android-viewpager

我在 ViewPager 中有一个 WebView。 而且 ViewPager 似乎消耗了所有水平滚动,所以我无法在 WebView(垂直作品)中滚动。

如何实现 WebView 优先使用水平滚动?

最佳答案

不要问我为什么这段代码被格式化成这样,

<强>1。像这样实现自定义 ViewPager 实例:

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;

public class CustomViewPager extends ViewPager {

    private MagazineWebView_WithoutFlipWebView mCurrentPageWebView_; //custom webview

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {

        if (Constants.LOGGING) {
            Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - onInterceptTouchEvent");
        }

        // if view zoomed out (view starts at 33.12... scale level) ... allow
        // zoom within webview, otherwise disallow (allow viewpager to change
        // view)
        if (mCurrentPageWebView_ != null && (mCurrentPageWebView_.getScale() * 100) > 34) {
            Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - intrcepted: " + String.valueOf((mCurrentPageWebView_.getScale() * > 100)));
            this.requestDisallowInterceptTouchEvent(true);
        }
        else {
            if (mCurrentPageWebView_ != null) {
                Log.v(Constants.LOG_OEAMTC_APP,
                        "CustomViewPager - not intrcepted: " + String.valueOf(mCurrentPageWebView_.getScale() * 100));
            }
            this.requestDisallowInterceptTouchEvent(false);
        }

        return super.onInterceptTouchEvent(event);
    }

    public MagazineWebView_WithoutFlipWebView getCurrentPageWebView() {
        return mCurrentPageWebView_;
    }

    public void setCurrentPageWebView(MagazineWebView_WithoutFlipWebView currentPageWebView) {
        mCurrentPageWebView_ = currentPageWebView;
    }
}

<强>2。在您的主要 (ViewPager) Activity 中,将以下行添加到 View 寻呼机

mViewPager_ = new AwesomePagerAdapter();
        viewpapgerInLayout = (CustomViewPager) findViewById(R.id.awesomepager);
        viewpapgerInLayout.setAdapter(mViewPager_);
        viewpapgerInLayout.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                  viewpapgerInLayout.setCurrentPageWebView(mLstPagesWebviews_.get(position));
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

<强>3。最后,运行它 :=) 如果缩放级别是初始缩放, 允许更改页面,所有其他时间您都可以浏览您的 WebView

附注: *不要忘记*用您刚创建的 CustomViewPager 类更改 *.xml 文件中的 ViewPager

祝你好运:)

关于android - 在 Viewpager 中滚动 Webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535702/

相关文章:

android - PEPK 工具的加密 key 有问题

android - ADT 在 Strings.xml 中显示错误,如何纠正该特定错误?

java - Android - 如何将 ImageView 从一个 Activity 转移到另一个 Activity ?

java - Android中半透明导航栏的问题

android - 让 Espresso 等待 WebView 完成加载

ios - 预加载 webView 不起作用 - 试图减少加载时间

javascript - 修复了滚动停止在 div 上的侧边栏

iphone - 无法在用户不可交互的 UIWebView 中激活链接

javascript - 滚动到时更改元素类别

通过代码控制鼠标滚轮