Xamarin.Android在尝试从资源加载样式时崩溃

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

另一天与Xamarin和另一个问题!

所以,空白的Xamarin.Android项目。在资源下的mipmap-anydpi-v26文件夹中创建了自定义样式/形状,因为如果我在别处或甚至在另一个新的子文件夹中创建它,则无法访问它。即使解决方案中的任何地方都没有drawable文件夹(这对我来说非常令人费解。)

无论如何,这是它的样子:

myshape.xml

<?xml version="1.0" encoding="utf-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
  android:shape="rectangle">
  <solid android:color="#ffffff" />
  <size android:height="10dp" android:width="10dp"/>
  <corners android:radius="130dp" />
</shape>

然后我把它设置为backgroundLinearLayout如下:

 <LinearLayout android:layout_height="match_parent"
               android:layout_weight="match_parent"
               android:background="@mipmap/myshape"/>

它完美地展现在设计师中。即使在仿真器中,它在调试和释放模式下都能很好地工作。

当我尝试在物理设备(三星Galaxy J2)中调试它时,会出现问题。它运行Android 5.1(API Level 22)(请注意,我的项目的最低要求是API级别21)。所以,当我尝试通过设备调试应用程序时,我收到以下错误:

Java.Lang.Exception:二进制XML文件行#1:错误类膨胀

MainActivity.csOnCreate()方法中出现以下错误:

SetContentView(Resource.Layout.activity_main);

但是,如果我将背景设置为ic_launcher,它似乎是一个徽标,但在.xml文件夹中存储为mipmap-anydpi-v26文件,它可以很好地工作。 ic_launcher.xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
 <background android:drawable="@color/ic_launcher_background"/>
 <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

所以,我有点困惑,因为我如何将形状设置为背景呢?我已经浏览了其他SO帖子,但几乎所有这些帖子似乎都有drawable文件夹,在我的情况下缺少。即使在新项目中,该文件夹也会丢失。您可以通过创建一个空白的Xamarin.Android项目来简单地重现它。

那么,关于为什么它可能会在物理设备上崩溃的任何想法?

c# android xml xamarin xamarin.android
1个回答
1
投票

...有我的案例中缺少的drawable文件夹。

只需在drawable文件夹中创建一个Resources文件夹即可。

注意:通过IDE的解决方案/项目资源管理器而不是文件系统执行此操作。

默认情况下,有许多Resources文件夹和Xamarin模板不会创建所有这些文件夹。

注意:它们实际上成为Android APK文件结构中的res/xxxx

re:https://developer.android.com/training/multiscreen/screendensities

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.