• Icon.png – 应用程序的默认图标

  • Main.axml – 应用程序的默认用户界面布局文件。 请注意,虽然 Android 使用 .xml 文件扩展名,但 Xamarin.Android 使用 .axml 文件扩展名。

  • Strings.xml – 有助于本地化应用程序的字符串表

  • AboutResources.txt – 这不是必要的,可以安全地删除。 它只是简要概述了 Resources 文件夹及其中的文件。

  • Resource.designer.cs – 此文件由 Xamarin.Android 自动生成和维护,并保存分配给每个资源的唯一 ID。 这与用 Java 编写的 Android 应用程序在 R.java 文件中的用途非常相似和完全相同。 它由 Xamarin.Android 工具自动创建,并会不时重新生成。

    创建和访问资源

    创建资源非常简单,就像将文件添加到有问题的资源类型的目录一样简单。 下面的屏幕截图显示了德国区域设置的字符串资源已添加到项目中。 将Strings.xml 添加到文件时,Xamarin.Android 工具会自动将 生成操作 设置为 AndroidResource

    Visual Studio Visual Studio for Mac

    这样,Xamarin.Android 工具就可以正确编译资源并将其嵌入 APK 文件。 如果出于某种原因, 生成操作 未设置为 Android 资源 ,则文件将从 APK 中排除,任何加载或访问资源尝试都会导致运行时错误,应用程序将崩溃。

    此外,请务必注意,虽然 Android 仅支持资源项的小写文件名,但 Xamarin.Android 更宽容:它将支持大写和小写文件名。 图像名称的约定是使用小写和下划线作为分隔 (符,例如 my_image_name.png ) 。 请注意,如果短划线或空格用作分隔符,则无法处理资源名称。

    将资源添加到项目后,可通过两种方式在应用程序中使用它们 - 以编程方式在代码) 或 XML 文件中 (。

    以编程方式引用资源

    若要以编程方式访问这些文件,请为其分配唯一的资源 ID。 此资源 ID 是在名为 Resource Resource.designer.cs 的特殊类中定义的整数,如下所示:

    public partial class Resource
        public partial class Attribute
        public partial class Drawable {
            public const int Icon=0x7f020000;
        public partial class Id
            public const int Textview=0x7f050000;
        public partial class Layout
            public const int Main=0x7f030000;
        public partial class String
            public const int App_Name=0x7f040001;
            public const int Hello=0x7f040000;
    

    每个资源 ID 都包含在与资源类型对应的嵌套类中。 例如,将文件Icon.png添加到项目中时,Xamarin.Android 更新了Resource该类,创建名为 中的Icon常量调用Drawable的嵌套类。 这允许在代码中将文件 Icon.png 引用为 Resource.Drawable.Icon。 不应手动编辑该 Resource 类,因为 Xamarin.Android 将覆盖对类所做的任何更改。

    在代码) 中以编程方式 (引用资源时,可以通过使用以下语法的 Resources 类层次结构访问这些资源:

    [<PackageName>.]Resource.<ResourceType>.<ResourceName>
    
  • PackageName – 提供资源的包,仅在使用其他包中的资源时才是必需的。

  • ResourceType – 这是上述 Resource 类中的嵌套资源类型。

  • 资源名称 – 这是资源 (的文件名,没有扩展名) 或 XML 元素中资源的 android:name 属性的值。

    从 XML 引用资源

    XML 文件中的资源通过以下特殊语法进行访问:

    @[<PackageName>:]<ResourceType>/<ResourceName>
    
  • PackageName – 提供资源的包,仅在使用其他包中的资源时才是必需的。

  • ResourceType – 这是 Resource 类中的嵌套资源类型。

  • 资源名称 – 这是资源 (的文件名, 没有 文件类型扩展名) 或 XML 元素中资源的属性的值 android:name

    例如,布局文件 Main.axml 的内容如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <ImageView android:id="@+id/myImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/flag" />
    </LinearLayout>
    

    此示例具有一个 ImageView 需要可绘制的资源命名 标志。 其ImageViewsrc属性设置为 @drawable/flag. 活动启动时,Android 将在目录 Resource/Drawable 中查找名为 flag.png 的文件, (文件扩展名可能是另一种图像格式,例如 flag.jpg) 并加载该文件并将其显示在该文件中 ImageView。 运行此应用程序时,如下图所示:

  •