2011-05-04 3 views
5

Tôi đang cố tạo một bộ xem web cuộn theo chiều ngang, sử dụng tiện ích Thư viện. Vấn đề là tôi không thể vuốt các khung nhìn, tất nhiên nó hoạt động cho các phòng trưng bày hình ảnh. Tiếp theo đang nấu ăn, trong onCreate của hoạt động() I:Android: Thư viện các bài kiểm tra trên web

g = (Gallery) findViewById(R.id.chapter_browser); 
g.setAdapter(new WebViewAdapter(this)); 

Sau đó adapter tạo ra WebViews và trả chúng cho các chỉ số yêu cầu:

public class WebViewAdapter extends BaseAdapter { 
     int mGalleryItemBackground; 
     private Context mContext; 

     private String[] pages = { 
       "test1.html", 
       "test2.html", 
       "test3.html", 
       "test4.html" 
     }; 

     public WebViewAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return pages.length; 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      WebView i = new WebView(mContext); 

      i.loadUrl("file:///android_asset/" + pages[position]); 
      i.setBackgroundResource(mGalleryItemBackground); 
      i.setWebViewClient(new WebViewClient()); 
      i.setLayoutParams(new Gallery.LayoutParams(100,100)); 
      i.setInitialScale(100); 
      i.setFocusable(false); 
      i.setClickable(false); 

      return i; 
     } 
    } 

Vấn đề có vẻ là rằng WebView khẳng định về việc tiêu thụ các sự kiện cảm ứng, mặc dù đã tắt thuộc tính clickable. Tôi đã thử tạo một OnTouchEventListener cho các khung nhìn và sau đó gửi đi các sự kiện đến thư viện, nhưng điều đó dường như đã làm hỏng chương trình.

Bất kỳ manh mối nào được đánh giá cao.

Trả lời

0

Tôi khuyên bạn nên hiển thị ảnh chụp nhanh của các thay đổi khác nhau WebView và chỉ WebView thực ở trung tâm làm chủ động. Tôi chỉ có thể tưởng tượng các tài nguyên mà nó sẽ tiêu thụ hiển thị một số WebViews cùng một lúc với các trang web nặng tải.

http://developer.android.com/reference/android/webkit/WebView.html#capturePicture%28%29

+0

Thật vậy, đó là những gì tôi đã làm, chính xác vì lý do bạn đề cập đến. Nhưng tôi vẫn quan tâm đến vấn đề chung: làm cách nào để chặn các sự kiện nhấp chuột vào WebView, ngay cả khi chỉ có một WebView chính làm chế độ xem chính? –

6

tôi đã cùng một vấn đề với một Gallery of WebViews, và kết thúc cách làm như sau:

public class MyGallery extends Gallery 
{ 

    private final int slop; 
    private float initialX; 
    private float initialY; 

    public MyGallery(Context context, AttributeSet attrs) 
     { 
     super(context, attrs); 

     slop = ViewConfiguration.get(context).getScaledTouchSlop(); 
     } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
     { 
     return false; 
     } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) 
     { 
     switch (ev.getAction()) 
      { 
      case MotionEvent.ACTION_DOWN: 
       /* 
       * Kludge: Both the gallery and the child need to see the 
       * gesture, until we know enough about it to decide who gets it. 
       */ 
       onTouchEvent(ev); 

       initialX = ev.getX(); 
       initialY = ev.getY(); 

       return false; 

      case MotionEvent.ACTION_MOVE: 
       float distX = Math.abs(ev.getX() - initialX); 
       float distY = Math.abs(ev.getY() - initialY); 

       if (distY > distX && distY > slop) 
        /* Vertical scroll, child takes the gesture. */ 
        return false; 

       /* 
       * If a horizontal scroll, we take the gesture, otherwise keep 
       * peeking. 
       */ 
       return distX > slop; 

      default: 
       return false; 
      } 
     } 

} 

này cho phép tôi di chuyển các nội dung trang web theo chiều dọc, và click vào liên kết, trong khi ngang cuộn ổ đĩa.