【发布时间】:2019-04-08 23:53:17
【问题描述】:
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>
然后我将其设置为LinearLayout 的background,如下所示:
<LinearLayout android:layout_height="match_parent"
android:layout_weight="match_parent"
android:background="@mipmap/myshape"/>
它在设计器中完美显示。即使在模拟器中,它在调试和发布模式下也能很好地工作。
当我尝试在物理设备(Samsung Galaxy J2)中调试它时会出现问题。它运行 Android 5.1(API 级别 22)(请注意,我的项目的最低要求是 API 级别 21)。因此,当我尝试通过设备调试应用程序时,出现以下错误:
Java.Lang.Exception:二进制 XML 文件第 1 行:膨胀类时出错
MainActivity.cs 的OnCreate() 方法中的以下行中抛出错误:
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 项目来简单地重现它。
那么,对于为什么它可能会在物理设备上崩溃的任何想法?
【问题讨论】:
-
您可能有一个
Resources文件夹,如果是,请在Resources内创建一个drawable文件夹并尝试将您的形状移动到此文件夹。之后尝试Build->Clean Solution然后Build->Rebuild Solution。 -
@sunilsunny 已经尝试过了,但是这样它甚至根本无法访问形状。
标签: c# android xml xamarin xamarin.android