android开发分享在ViewPager中水平滚动webview

我已经把一个WebView加载到一个ViewPager中的图像。 当我尝试水平滚动图像时,我移到下一个视图而不是滚动图像。

在移到下一个视图之前是否可以滚动到图像的末尾?

@Override public Object instantiateItem(View view, int i) { WebView webview = new WebView(view.getContext()); webview.setHorizontalScrollBarEnabled(true); webview.loadUrl("https://www.site.with.an/image.gif"); ((ViewPager) view).addView(webview, 0); return webview; } 

    下面是一个真正的工作解决scheme,只要滚动,就可以在水平滑动的情况下滚动WebView 。 如果WebView无法进一步滚动,则ViewPager将使用下一个水平滑动来切换页面。

    扩展WebView

    在API-Level 14(ICS)中,引入了View方法canScrollHorizontally() ,这是我们需要解决的问题。 如果仅为ICS或以上开发,则可以直接使用此方法并跳到下一节。 否则,我们需要自行实施这个方法,以使解决scheme也可以在ICS之前工作。

    要做到这一点,只需从WebView派生自己的类:

     public class ExtendedWebView extends WebView { public ExtendedWebView(Context context) { super(context); } public ExtendedWebView(Context context, AttributeSet attrs) { super(context, attrs); } public boolean canScrollHor(int direction) { final int offset = computeHorizontalScrollOffset(); final int range = computeHorizontalScrollRange() - computeHorizontalScrollExtent(); if (range == 0) return false; if (direction < 0) { return offset > 0; } else { return offset < range - 1; } } } 

    重要提示:请记住在布局文件中引用ExtendedWebView而不要使用标准WebView

    扩展ViewPager

    现在您需要扩展ViewPager来正确处理手柄水平滑动。 无论如何,无论你是否使用ICS,都需要这样做:

     public class WebViewPager extends ViewPager { public WebViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { if (v instanceof ExtendedWebView) { return ((ExtendedWebView) v).canScrollHor(-dx); } else { return super.canScroll(v, checkV, dx, x, y); } } } 

    重要提示:请记住在您的布局文件中引用您的WebViewPager而不是标准的ViewPager

    而已!

    更新2012/07/08:我最近注意到,使用ViewPager的“当前”实现时,上面显示的东西似乎不再需要。 “当前”实现似乎在捕获自己的滚动事件之前正确地检查子视图(请参阅ViewPager canScroll方法)。 不知道确切地说,当实现已经改变,以正确处理 – 我仍然需要上面的Android姜饼(2.3.x)和以前的代码。

    虽然Sven提到的布局文件,我想添加细节。 在扩展Webview和ViewPager类之后,

    在你的活动中,你将会像这样投入你的扩展课程:

     web = (MyWebView) findViewById(R.id.webview); 

    在你的布局文件里面像这样:

     <your.package.name.MyWebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

      以上就是android开发分享在ViewPager中水平滚动webview相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/517119.html

      (0)
      上一篇 2020年12月4日
      下一篇 2020年12月4日

      精彩推荐