【问题标题】:Unable to reference native Android view in Xamarin xaml无法在 Xamarin xaml 中引用本机 Android 视图
【发布时间】:2020-06-18 20:49:33
【问题描述】:

我正在使用 baseflow 的 MediaManager 插件:

https://github.com/Baseflow/XamarinMediaManager

我需要观看多个视频。通过阅读文档,我知道我需要在我的 xaml 中使用原生 android 视图创建一个视频视图,如下所示:

<mediamanager.platforms.android.video.VideoView
    android:id="@+id/your_videoview"
    android:layout_width="match_parent"
    android:layout_height="300dp" />

我使用以下文档来尝试添加原生视图支持: https://docs.microsoft.com/en-gb/xamarin/xamarin-forms/platform/native-views/xaml

我遇到的问题是我似乎无法正确引用“android:”。我添加了引用并设置了 [XamlCompilation(XamlCompilationOptions.Skip)] 但我仍然得到波浪形的绿线。我还清理/重建/删除了 bin/obj 文件。

也许我遗漏了一些明显的东西,也许有一个代码向导可以为我指明正确的方向。

【问题讨论】:

    标签: c# android xamarin xamarin.forms xamarin.android


    【解决方案1】:

    你不需要使用任何东西!您应该在 Xamarin 表单上尝试全新的“MediaElement”控件。它使添加视频变得轻而易举:

    <MediaElement Source="https://sec.ch9.ms/ch9/5d93/a1eab4bf-3288-4faf-81c4-294402a85d93/XamarinShow_mid.mp4"
              ShowsPlaybackControls="True" />
    

    尽管它是预览版,但运行起来非常流畅,我在 MS Build 2020 期间的 Kym Philpotts 现场演示中观看了它。在此处查看官方文档:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/mediaelement

    这也是录制流的视频:https://youtube.com/watch?v=dMR6uaFz0Eg

    【讨论】:

    • 您好,谢谢您的建议!当我星期一回到办公室时,我会看看这个并试一试。
    • 是的,但正如他在问题中所说,他需要有多个视频观看次数。所以这种方法行不通。
    • 嘿@Mihail-Duchev 为什么不呢?你不能像做多个标签一样创建多个 MediaElement 控件吗?
    • 是的,谢谢,我现在正在使用媒体元素。这很容易实现,但我遇到了一个问题。尽管将源设置为 null 并调用了 Stop(),但我无法让播放器释放源。视频仍然加载在播放器中。
    • MediaElement 漏洞百出。
    【解决方案2】:

    可以在表单中使用原生视图。不幸的是,情况并非如此。您的原生视图需要在 Android 项目中拥有自己的 *.axml 文件才能使用它。

    查看此特定配置所需的其余代码,它也应该在本机编写(在 Android 项目中) - FindViewById && SetView 都是需要在 Android 项目中的代码。

    不幸的是,在某些情况下,并非所有内容都已准备好在共享项目中使用,有时您需要“弄脏自己的手”并使用“本地”,以便按照您希望的方式配置您的代码。

    您应该使用它,因为它在Xamarin.Forms section 中显示。然后,您可以应用 Add Video Player to the UI 中记录的修改。您可以创建一个继承自 VideoViewRenderer 的类并在那里修改您的视图。如果您不熟悉自定义渲染器,可以阅读更多关于它们的信息here

    【讨论】:

    • 这不正确,您可以在 XAML 中引用本机控件:docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/…
    • 是的,我的错。我已经更正了我的答案。尽管我们可以使用原生视图,但配置要求它是原生完成的。
    • 谢谢大家。 @MihailDuchev 我有点困惑。我只通过 xaml 文件修改了布局。如果我需要使用 axml 文件,是否意味着我需要完全重新布局并丢弃我的 xaml 文件?
    • 没有。会发生什么 - 你将在 2 个地方有代码 - 共享和 android 项目。在共享项目中,您将使用&lt;mm:VideoView,而在本机项目中,您只需稍作修改 - 用 axml mediamanager.platforms.android.video.VideoView 替换您的视图。这意味着您将使用 Forms 中的代码,但您将简单地“扩展”视图的功能。阅读有关自定义渲染器如何工作的更多信息,您将了解流程。 :)
    • 不,你不需要使用AXML来包裹视图。
    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2019-08-30
    相关资源
    最近更新 更多