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

时间:2019-04-08 23:53:17

标签: c# android xml xamarin xamarin.android

与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>

然后我将其设置为background中的LinearLayout,如下所示:

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

它在设计师内部完美展现。即使在仿真器中,它也可以在调试和发布模式下很好地工作。

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

  

Java.Lang.Exception:二进制XML文件第1行:错误夸大类

MainActivity.cs的{​​{1}}方法中,以下行引发错误:

OnCreate()

但是,如果我将背景设置为SetContentView(Resource.Layout.activity_main); ,它看起来像是徽标,但是作为ic_launcher文件存储在.xml文件夹中,则效果很好。 mipmap-anydpi-v26看起来像这样:

ic_launcher.xml

那么,我有点困惑,因为我该如何将形状设置为背景?我已经看过其他SO帖子,但几乎所有它们似乎都包含<?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> 文件夹,在我的情况下是不存在的。即使在新项目中,该文件夹也丢失。您可以通过创建一个空白的drawable项目来简单地重现它。

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

1 个答案:

答案 0 :(得分:1)

  

...在我的情况下,缺少可绘制的文件夹。

只需在您的drawable文件夹中创建一个Resources文件夹。

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

有许多“资源”文件夹,并且Xamarin模板默认情况下不会创建所有文件夹。

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

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

enter image description here