android webview 水平滚动,android – 在ViewPager内水平滚动webview

以下是一个真正的工作解决方案,只要可以滚动,它将滚动WebView的水平滑动。如果WebView无法进一步滚动,则ViewPager将使用下一个横向扫描来切换页面。

扩展WebView

利用API-Level 14(ICS),View方法可以引入横向()方法,我们需要解决这个问题。如果您只开发ICS或以上版本,您可以直接使用此方法并跳到下一节。否则我们需要自己实现这个方法,使解决方案在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 here的canScroll方法)。不完全知道,当实现被改变以正确处理时 – 我仍然需要Android Gingerbread(2.3.x)和之前的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值