2012-05-03 11 views
3

AndroidのWebViewに埋め込まれたYouTubeクリップを、640x360の大きさのウェブビューのサイズで、タブレットの画面の中央に表示しようとしています。しかし私は、YouTubeのクリップを遮断しているように見えると白の背景は以下のスクリーンショットのように表示されます、これを行うことができた:AndroidのWebViewでYoutubeクリップを一元的に整列する際の問題

screenshot

ここでは、Javaコードです:

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class VideoWebViewActivity extends Activity { 


    private static final int VIDEO_WIDTH = 640; 
    private static final int VIDEO_HEIGHT = 360; 
    private WebView webView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     webView = (WebView) findViewById(R.id.weblink_webview); 

     webView.getSettings().setPluginsEnabled(true); 
     webView.getSettings().setJavaScriptEnabled(true); 

     webView.setWebChromeClient(new WebChromeClient()); 

     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onReceivedError(final WebView view, final int errorCode, final String description, final String failingUrl) { 
      } 

      @Override 
      public boolean shouldOverrideUrlLoading(final WebView view, final String url) { 
       view.loadUrl(url); 
       return true; 
      } 

      @Override 
      public void onLoadResource(WebView view, String url) { 
       super.onLoadResource(view, url); 

      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 

      } 
     }); 

     String youtubeUrl = "http://www.youtube.com/embed/O1N2rENXq_Y"; 

     String embedCode = "<!DOCTYPE html><html><head>" + " <style type=\"text/css\"> body { background-color: transparent; padding:0; margin:0; }</style>" 
         + "</head><body><div align=\"center\"><iframe align=\"middle\" width=\"" + (VIDEO_WIDTH) + "\" height=\"" 
         + (VIDEO_HEIGHT) + "\" src=\"" + youtubeUrl 
         + "\" frameborder=\"0\" allowfullscreen></iframe></div></body></html>"; 


     webView.loadData(embedCode, "text/html", null); 
    } 

    @Override 
    public void onDestroy() { 
     if (webView != null) { 
      webView.destroy(); 
     } 
     super.onDestroy(); 
    } 
} 
しかし上、このことについて奇妙なこと、アンドロイド3.2 7インチタブレットにそれが正常に動作していることである:

<?xml version="1.0" encoding="UTF-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/weblink" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:visibility="visible" > 


    <WebView 
     android:id="@+id/weblink_webview" 
     android:layout_width="640dip" 
     android:layout_height="wrap_content" 
     /> 

</RelativeLayout> 

編集:

そして、ここではレイアウトxmlです4.0.3(ICS)の10インチタブレットはスクリーンショットのように見えます。ハニカム3.1の10インチタブレットには同じ問題があります。これは私に、この振る舞いの原因となるWebビュー自体のなかに何らかの設定や問題があると信じています。

編集2:問題を解決するためにさまざまなアイデアを試していましたが、クリップの右側の白い矩形は、ウェブビューに追加する余白の量と直接リンクしているようです。たとえば、ビューを中央に揃えて100dpiのマージンを追加すると、クリップの右側に約100dpiの白い帯が表示されます。

どのような提案も歓迎されます。

おかげで、

ミハイ

+0

設定を試しましたか?layout_width = "wrap_content"? –

+0

うん、私はそれを試みたが、画面の端に達するクリップの左右に2つの白い水平の長方形が得られ、私はそれを望んでいない。 – r1k0

答えて

0

このポストは少し古いですが、あなたはまだ解決策を探している場合:ICSの

WebViewのは非常にバグがあり、そして、あなたの問題は同じです左マージンを持つWebView内のGoogleマップを使用します。この問題を解決するには

は、マニフェストでは、私はこれは、ICSの新機能をアクティブにし、問題に

乾杯を解決しないことができます

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" /> 

によって

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> 

を変更

+0

実際、ICSのWebView(Google I/Oの今年の確認済み)にバグがあり、Jelly Beanでも修正されているようです。答えをありがとう、私はそれを試してみるつもりですが、私たちのアプリで新しいAPIをサポートする必要がありますので、この制限は私たちのために動作しない場合があります。 – r1k0

+0

これをテストしたところ、問題は解決していないようです... – r1k0

関連する問題