2012-02-07 78 views
0

我剛剛進行了一些調查,試圖更新我的應用程序的ICS。當把我的WebView Flash內容到全屏通過HTML或長按Flash內容的全部內容剛好消失圍繞着Android ICS源打獵之後,我發現這個在Android ICS 4.0將Flash WebView放入全屏調用hideAll方法?

android.webkit.PluginFullScreenHolder 

PluginFullScreenHolder

public void show() { 
    // Other plugins may attempt to draw so hide them while we're active. 
    if (mWebView.getViewManager() != null) 
     mWebView.getViewManager().hideAll(); 

    WebChromeClient client = mWebView.getWebChromeClient(); 
    client.onShowCustomView(mLayout, mOrientation, mCallback); 
} 

void hideAll() { 
    if (mHidden) { 
     return; 
    } 
    for (ChildView v : mChildren) { 
     v.mView.setVisibility(View.GONE); 
    } 
    mHidden = true; 
} 

它基本上隱藏我的整個WebView全屏幕選擇現在這不會在默認瀏覽器中發生,並且此方法不可訪問。我怎樣才能解決這個問題?

任何幫助,非常感謝。

最佳

大衛

回答

0

我通過重寫onShowCustomView方法解決了上述問題。 請嘗試,如果這適合你。以下是我的代碼。

mWebView.setWebChromeClient(new WebChromeClient(){ 

     public void onShowCustomView(View view, int requestedOrientation, WebChromeClient.CustomViewCallback callback){ 
      super.onShowCustomView(view, callback); 
      if(Build.VERSION.SDK_INT >=14) { 
       if (view instanceof FrameLayout) {     
        base.addView(view, new FrameLayout.LayoutParams(
        ViewGroup.LayoutParams.FILL_PARENT, 
        ViewGroup.LayoutParams.FILL_PARENT, 
        Gravity.CENTER));     
        base.setVisibility(View.VISIBLE); 
       } 
      } 
     } 

    }); 
+4

什麼是這段代碼的基礎?它是頂層窗口裝飾視圖嗎? – kasgoku 2012-05-16 15:59:15

+0

什麼是基地傢伙?基地顯示錯誤 – kalandar 2012-10-23 09:14:16

0

以西蒙的答案爲基礎,我把它運用起來了。我有一個FrameLayout作爲WebView的父項。這是西蒙答案的基礎。在onCreate我構建webview並將其添加到我的FrameLayout,這被稱爲mWebContainer

mWebView.setWebChromeClient(new WebChromeClient(){ 
      public void onShowCustomView(View view, int requestedOrientation, WebChromeClient.CustomViewCallback callback){ 
       super.onShowCustomView(view, callback); 
       if(Build.VERSION.SDK_INT >=14) { 
        if (view instanceof FrameLayout) { 
         mWebContainer.addView(view, new FrameLayout.LayoutParams(
         ViewGroup.LayoutParams.MATCH_PARENT, 
         ViewGroup.LayoutParams.MATCH_PARENT, 
         Gravity.CENTER));     
         mWebContainer.setVisibility(View.VISIBLE); 
        } 
       } 
      } 
     });