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。
运行此应用程序时,如下图所示: