代码之家  ›  专栏  ›  技术社区  ›  jedatu

库项目中的Xamarin Android布局资源未包含在应用程序中

  •  0
  • jedatu  · 技术社区  · 6 年前

    我有一个XamarinAndroid库项目,它被一个Android应用程序项目引用。

    库项目具有库项目组件需要使用的布局文件。资源。设计师cs文件似乎生成正确。布局被标记为Android资源。但在运行时,资源并不存在。尝试访问它们只会返回0。

    在阅读了所有关于这个主题的问题之后,我相信这应该是可行的,但到目前为止还没有。想法?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Wendy Zang - MSFT    6 年前
    1. 创建Android类库。 enter image description here

    2. 在此类库中创建布局文件夹并在此文件夹中创建布局。 enter image description here

    3. 在xamarin android应用程序中添加代码。

      var btn_Load = FindViewById<Button>(Resource.Id.btn_LoadLibraryLayout);
          btn_Load.Click += delegate
          {
              SetContentView(ClassLibrary1.Resource.Layout.library_layout);
          };
      

    我创建了一个按钮来打开类库中的布局。

    enter image description here

    您可以从GitHub的ClassLibrary_布局文件夹下载以供参考。 https://github.com/WendyZang/Test.git

    更新:

    如果要获取资源标识符,则需要此类库的包名称。首先,我们无法在AndroidManifest中获取包名。xml文件或属性,因为类库没有它。

    你可以从下面的步骤得到它。

    1. var PackageNname = Application.Context.PackageName;
      
    2. 您还可以在此活动中获取资源标识符。

      var resId2 = Resources.GetIdentifier("library_layout", "layout", PackageNname);
      

    结果:

    enter image description here

    paskage名称与我提供的app1相同。 com.companyname.app1

    您也可以直接在app1活动中使用代码。

       int resId2 = Resources.GetIdentifier("library_layout", "layout", "com.companyname.app1");