3

AndroidのWebViewに埋め込まれたYouTubeクリップを、Webビューのサイズが640x360 dipの大きさで、タブレットの画面の中央に表示しようとしています。私はなんとかこれを行うことができましたが、YouTubeクリップが切り取られているようで、下のスクリーンショットのように白い背景が表示されます。

スクリーンショット

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();
    }
}

そして、これがレイアウトxmlです:

<?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>

編集:これについて最も奇妙なことは、Android 3.2を搭載した7インチのタブレットでは正常に動作することですが、4.0.3(ICS)を搭載した10インチのタブレットではスクリーンショットのように見えます.10インチのタブレットでも同じ問題が発生しますHoneycomb3.1を使用。これにより、この動作を引き起こすWebビュー自体に何らかの設定/問題があると私は信じています。

編集2:問題を解決するためにさまざまなアイデアを試しているときに、クリップの右側にある白い長方形のサイズが、Webビューに追加する左マージンの量と直接リンクしているように見えることに気付きました。たとえば、ビューの中央揃えをあきらめて100ディップのマージンを追加すると、クリップの右側に約100ディップ幅の白いストリップが表示されます。

どんな提案も歓迎します。

ありがとう、

ミハイ

4

1 に答える 1

0

この投稿は少し古いですが、まだ解決策を探している場合:

ICS の Webview は非常にバグが多く、左マージンのある WebView の Google マップでも問題は同じです。

この問題を解決するために、マニフェストで変更しました

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

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

これにより、ICS の新機能をアクティブ化せずに問題を解決できます。

乾杯

于 2012-06-28T14:48:30.550 に答える