2014-02-25 33 views
0

我有一個ListView其中每個項目包含WebView。這些網絡視圖中的每一個實際上都顯示一個從外部源加載的視頻播放器。每個網頁視圖的內容有一個固定的高度,並且完全顯示,我回避任何滾動-內滾動的問題通過設置:列表視圖上的滾動觸摸事件被整合爲列表項中的javascript點擊WebView

_webView.setVerticalScrollBarEnabled(false); 
_webView.setHorizontalScrollBarEnabled(false); 

我的問題是,當你刷卡列表視圖中滾動項目(工作正常),WebView內的播放器將其解釋爲點擊並開始播放視頻。我想從WebView的角度來看,鼠標在點x處下降,並出現在同一點,所以它看起來像一個點擊。

有沒有什麼辦法可以在頂部覆蓋某種透明視圖或做一些其他的欺騙手段,以便只有一次輕敲手勢才能使其進入WebView,並且任何輕掃/移動手勢都被視爲正常。

回答

0

我已經設法自己解決這個問題。訣竅是繼承WebView,然後重寫onTouchEvent方法是這樣的:

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    // If this web view gets sent a 'CANCEL' event, it means the parent list view has intercepted the event (for scrolling), so we want to catch it, otherwise it propogates into the HTML and starts the video 
    int action = MotionEventCompat.getActionMasked(event); 
    if(action == MotionEvent.ACTION_CANCEL) 
    { 
     return true; 
    } 
    return super.onTouchEvent(event); 
} 

我終於摸索出的是,封閉的ListView已經被攔截觸摸事件時,有一個正確的刷卡,其中發送ACTION_CANCEL事件到WebView。通過捕獲onTouchEvent方法中的ACTION_CANCEL事件,它可以防止事件進入WebView中的HTML。

相關問題