Android SupportLib ViewPager 反白问题

最近实现了一个ViewPager滑动的效果,但是意外的发现,在ViewPager里面如果有WebView控件,里面的内容是可以Mark的

但是在Mark时如果第一次操作是横向的Mark,在Mark两个字符左右的时候ViewPager就会响应中断然后横向滑动,这让人情何以堪啊~~

折腾了一会儿,最后整个反射然后重写中断方法在2.3上解决了,但是API 15+发现有时候Mark不上,实在搞不定了,先放着吧

Java代码 复制代码 收藏代码
  1. public class XXXXXPager extends ViewPager {
  2. public XXXXXPager(Context context, AttributeSet attrs) {
  3. super(context, attrs);
  4. // TODO Auto-generated constructor stub
  5. }
  6. @Override
  7. public boolean onInterceptTouchEvent(MotionEvent arg0) {
  8. // TODO Auto-generated method stub
  9. boolean touchSelection = false;
  10. requestFocus();
  11. if (getFocusedChild() != null) {
  12. WebView mWebView = (WebView) getFocusedChild().findViewById(
  13. R.id.webview);
  14. if (mWebView != null) {
  15. Class<?> webViewClass = mWebView.getClass();
  16. try {
  17. Field selectionField = webViewClass
  18. .getDeclaredField("mSelectingText");
  19. if (selectionField != null) {
  20. selectionField.setAccessible(true);
  21. touchSelection = selectionField.getBoolean(mWebView);
  22. }
  23. } catch (SecurityException e1) {
  24. e1.printStackTrace();
  25. } catch (NoSuchFieldException e1) {
  26. e1.printStackTrace();
  27. } catch (IllegalArgumentException e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. } catch (IllegalAccessException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. } finally {
  34. // touchSelection = false;
  35. }
  36. }
  37. }
  38. if (touchSelection) {
  39. return false;// false
  40. } else {
  41. return super.onInterceptTouchEvent(arg0);
  42. }
  43. }
  44. }


posted on 2013-02-10 19:03  蜜雪薇琪  阅读(258)  评论(0编辑  收藏  举报