Youtube视频未在WebView中加载

问题描述 投票:0回答:1

我想使用ListView和WebView显示Youtube视频列表。但视频未加载。

WebView始终显示出现错误,如下图所示:qazxsw poi

目前我不知道如何将URL直接绑定到AXML文件中的WebView,因此我自定义了一个BindableWebView:

enter image description here

这是Layout AXML文件:

public class BindableWebView : WebView
    {

        public BindableWebView(Context context, IAttributeSet attrs)
            : base(context, attrs)
        {
        }

        private string _webViewContent;

        public string WebViewContent
        {
            get { return _webViewContent; }
            set
            {
                _webViewContent = value;
                LoadHtmlString();
            }
        }

        private void LoadHtmlString()
        {
            LoadData(WebViewContent, "text/html", "utf-8");
        }
    }

这是视频模型:

    <dc.AlphaLinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:local="http://schemas.android.com/apk/res-auto"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        local:MvxBind="Click ItemClickCommand">

        <!--Video Thumbnail-->
        <FrameLayout
            android:layout_width="@dimen/ProductImageWidth"
            android:layout_height="@dimen/ProductImageHeight"
            android:layout_margin="@dimen/ExtraNewsImagePadding">
            <BindableWebView
            android:id="@+id/playerWebView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            local:MvxBind="WebViewContent Video.YoutubeUrl" />
        </FrameLayout>

        <LinearLayout
           .....
        </LinearLayout>

</dc.AlphaLinearLayout>

和C#中的VideoListViewm:

namespace ....Shared.Models
{
    public class Video
    {
        public string YoutubeId { get; set; }

        public string YoutubeImageUrl => $"https://img.youtube.com/vi/{YoutubeId}/0.jpg";

        public string YoutubeUrl => $"<iframe width=\"100%\" height=\"100%\" src=\"https://www.youtube.com/embed/{YoutubeId}\" frameborder=\"0\" allowfullscreen></iframe>";

        public Guid NewsId { get; set; }
    }
}

运行调试,WebViewContent获取精确的Url,但我不知道为什么它不能像我想的那样工作:namespace DeHeus.Droid.Views { public class VideoListView : DetailViewWithShare { protected override int LayoutId => Resource.Layout.VideoListView; private CustomMvxListView _videoListview; protected override void InitView(View view) { _videoListview = view.FindViewById<CustomMvxListView>(Resource.Id.videoList); _videoListview.ItemTemplateId = Resource.Layout.VideoListItemView; } protected override void CreateBinding() { var bindingSet = this.CreateBindingSet<VideoListView, VideoListViewModel>(); bindingSet.Bind(_videoListview.Adapter) .For(v => v.ItemsSource) .To(vm => vm.VideoItemViewModels); bindingSet.Bind(_videoListview) .For(v => v.ScrollToBottom) .To(vm => vm.ScrollToBottomCommand); bindingSet.Apply(); } } } "<iframe width=\"100%\" height=\"100%\" src=\"https://www.youtube.com/embed/usoFYAqOMyA\" frameborder=\"0\" allowfullscreen></iframe>"有没有人有想法?谢谢

webview xamarin.android mvvmcross
1个回答
1
投票

做了很多研究,我终于解决了这个问题。

您只需要在LoadData之前放置enter image description here

SetWebChromeClient(new WebChromeClient());
© www.soinside.com 2019 - 2024. All rights reserved.