升级Xamarin Forms 4.5+到5.0出现MaterialTextView转Toolbar错误如何解决
Xamarin Forms 4.5.x升级至5.0 Android端类型转换异常解决方案
抛出异常:
Unable to convert instance of type 'Google.Android.Material.TextView.MaterialTextView' to type 'AndroidX.AppCompat.Widget.Toolbar'
异常截图:
以下是按优先级排序的可行解决方案:
- 修正Toolbar布局文件
打开Android项目Resources/layout目录下的Toolbar.axml(或Toolbar.xml),确认根节点为androidx.appcompat.widget.Toolbar,不要误用MaterialTextView作为根控件。正确的布局示例如下:
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
- 校验应用主题配置
打开Resources/values/styles.xml,确认应用基础主题继承自MaterialComponents系列主题,示例如下:
<style name="MainTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
不要自定义错误的toolbarStyle属性强制替换Toolbar控件类型。
- 清理项目缓存
删除Android项目根目录下的bin、obj文件夹,再执行完整的重新生成操作,避免旧版本的资源缓存残留导致类型引用错误。 - 适配自定义渲染器(如果使用)
如果你自定义了NavigationPage的Android平台渲染器,需要同步修改代码适配Xamarin Forms 5.0的AndroidX组件体系,移除旧的Android Support包控件引用,不要将Toolbar错误转换为MaterialTextView类型。
内容的提问来源于stack exchange,提问作者Deathgar Vyathemskiy
相关产品推荐
相关产品推荐


