Xamarin CarouselView error: Error inflating class CarouselView

Xamarin CarouselView error: Error inflating class CarouselView

我正在尝试使用 CarouselView 创建水平 ListView,因为我的一个客户不喜欢我在他们的项目中实现的垂直 ListView。我尝试按照几个教程进行操作,但无济于事。

我预感问题出在我下载的 nuget 包或我在 xml 中使用的命名空间。我在 Xamarin Android 应用程序中使用 Visual studio 2019。

这是我为轮播视图下载的 nuget 包列表:

轮播视图

CarouselView.FormsPlugin

CarouselView.FormsPlugin.修复

Xamarin.Forms v5.0.0.2083

这是我的content_main.xml

中的代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:forms="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.CarouselView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:showIn="@layout/activity_main">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Hello World!" />
    
        <forms:CarouselView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </RelativeLayout>

除了创建新项目时获得的默认页面外,我在此处添加的所有内容是要使用的命名空间的 xmlns:forms 行和 CarouselView 标记本身。

在我的 OnCreate 后面的代码中,我有这个:

                base.OnCreate(savedInstanceState);
                Xamarin.Essentials.Platform.Init(this, savedInstanceState);
                CarouselViewRenderer.Init();
    
                SetContentView(Resource.Layout.activity_main);

同样,我在这里添加的只是对 CarouselViewRenderer 的 Init 调用。调用 SetContentView 时出现错误“Error inflating class CarouselView”。

如果我忽略了一些愚蠢的事情,请告诉我。我无法让 Intellisense 在 xml 中建议 CarouselView,所以我确定有问题。也许它找不到标签?这就是为什么我认为它可能是命名空间问题。

我试过的:

我尝试交换 Init 调用并以不同的顺序调用它,但没有任何效果。

我在 GitHub 论坛中寻找类似的问题,但似乎没有解决方案适用于我的情况。

我尝试将 xml 中的标签名称更改为不带 'w' 的 CarouselVie 之类的名称,但我得到了同样的错误,这意味着它可能找不到该标签开头。

我尝试更改命名空间并寻找不同的 nuget 包来下载,但同样没有任何效果。

从文献What is Xamarin.Forms?,我们知道

Xamarin.Forms is an open-source UI framework. Xamarin.Forms allows developers to build Xamarin.Android, Xamarin.iOS, and Windows applications from a single shared codebase.

Xamarin.Forms allows developers to create user interfaces in XAML with code-behind in C#. These interfaces are rendered as performant native controls on each platform.

At runtime, Xamarin.Forms utilizes platform renderers to convert the cross-platform UI elements into native controls on Xamarin.Android, Xamarin.iOS and UWP. This allows developers to get the native look, feel and performance while realizing the benefits of code sharing across platforms.

因此,您可以在表单的应用程序中使用 Xamarin Forms 控件 (CarouselView),并将该应用程序部署到您的 android 设备或​​ ios 设备。

根据您发布的以上描述,我认为您对 CarouselView 的用法感到困惑。

由于CarouselView是xamarin form的一个控件,你应该在xamarin forms的应用程序中使用它而不是在Android.

中引用它

CarouselView的使用方法可以参考官方文档:Xamarin.Forms CarouselView.

并且本文档中包含一个示例(Xamarin.Forms - CarouselView),您可以下载它并将其部署到您的android设备上,这将帮助您更好地理解它。