【问题标题】:Xamarin.Android Crashes When Trying To Load Style From Resource尝试从资源加载样式时 Xamarin.Android 崩溃
【发布时间】: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>

然后我将其设置为LinearLayoutbackground,如下所示:

 <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.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 项目来简单地重现它。

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

【问题讨论】:

  • 您可能有一个Resources 文件夹,如果是,请在Resources 内创建一个drawable 文件夹并尝试将您的形状移动到此文件夹。之后尝试Build-&gt;Clean Solution 然后Build-&gt;Rebuild Solution
  • @sunilsunny 已经尝试过了,但是这样它甚至根本无法访问形状。

标签: c# android xml xamarin xamarin.android


【解决方案1】:

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

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

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

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

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

回复:https://developer.android.com/training/multiscreen/screendensities

【讨论】:

  • 已经尝试过了,但是这样它甚至根本无法访问形状。
  • 好的,所以它似乎在模拟器中工作。但是,我想知道为什么在设计视图中它没有显示任何内容。
  • 是的,现在它也可以在设备上完美运行!但是一个问题。我再也看不到设计师的风格/形状了。如果这种情况一直持续下去,我怎么可能开发 UI?
  • @zackraiyan Xamarin.Android 设计视图并非总是最棒的东西?,有时您必须关闭布局文件并重新打开它,甚至重新启动 Visual Studio 让它再次工作......(注意:我个人使用 Android Studio 作为其核心布局工具,一旦我很高兴将“res”子文件夹拖放到 VS IDE Resources 文件夹中(至少有一个 3rd-party VSIX 扩展会自动执行此操作,因此您可以在 Android Studio 和 Visual Studio 之间切换以帮助完成此过程,但我只是拖放......)
  • 你能给我扩展的链接吗?
猜你喜欢
  • 2020-07-20
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2019-09-10
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多