在 Viewpager 中滚动 Webview [英] Scroll Webview in Viewpager
问题描述
我在 ViewPager
中有一个 WebView
.而 ViewPager
似乎消耗了所有的水平滚动,所以我无法在 WebView
(垂直工作)中滚动.
I have a WebView
in a ViewPager
.
And the ViewPager
seems to consume all the horizontal scrolling, so that I can't scroll in the WebView
(vertical works).
如何实现 WebView
优先使用水平滚动?
How can I achieve that the WebView
has got priority consuming the horizontal scrolling?
推荐答案
不要问我为什么这段代码会变成这样,
don't ask me why this code gets formatted like this,
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 中,将以下行添加到视图寻呼机
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.最后,运行它 :=) 如果缩放级别为初始缩放,允许更改页面,所有其他时间您都可以浏览您的网络视图
3. finally, run it :=) if the zoom level is at initial zoom, changes pages is allowed, all the other time you can navigate your web view
Ps.: *不要忘记* 使用刚刚创建的 CustomViewPager 类更改 *.xml 文件中的 ViewPager
Ps.: *Don't forget* to change your ViewPager in your *.xml file with the CustomViewPager Class you just created
祝你好运:)
这篇关于在 Viewpager 中滚动 Webview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!