在 Xamarin.Android 中找不到与给定名称(在“headerLayout”处)匹配的资源

Posted

技术标签:

【中文标题】在 Xamarin.Android 中找不到与给定名称(在“headerLayout”处)匹配的资源【英文标题】:No resource found that matches the given name (at 'headerLayout') in Xamarin.Android 【发布时间】:2016-02-02 16:28:38 【问题描述】:

我正在使用 Xamarin for android 创建 Android 应用。我想在我的应用 NavigationDrawer 中使用,所以我从 Xamarin Components Store 下载并安装了“Android 设计库”。然后我为此编辑了我的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawerLayout"
    android:layout_
    android:layout_
    android:fitsSystemWindows="true">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />
    <ListView
        android:layout_
        android:layout_
        android:id="@+id/articlesListView" />
    <android.support.design.widget.NavigationView
        android:id="@+id/navView"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/navHeader"
        app:menu="@menu/navMenu"/>
</android.support.v4.widget.DrawerLayout>

navHeader.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="?attr/colorPrimaryDark"
    android:padding="16dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:orientation="vertical"
    android:gravity="bottom">

    <TextView
        android:layout_
        android:layout_
        android:text="Username"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>

</LinearLayout>

和菜单/navMenu.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <group android:checkableBehavior="single">
    <item
      android:id="@+id/nav_home"
      android:title="Home" />
    <item
      android:id="@+id/nav_messages"
      android:title="Messages" />
    <item
      android:id="@+id/nav_friends"
      android:title="Friends" />
    <item
      android:id="@+id/nav_discussion"
      android:title="Discussion" />
  </group>
  <item android:title="Sub items">
    <menu>
      <item
        android:title="Sub item 1" />
      <item
        android:title="Sub item 2" />
     </menu>
  </item>
</menu>

不幸的是,在编译时,我收到了以下错误:

C:\Project\Project\File.axml: 错误 APT0000: 找不到资源 匹配给定的名称(在 'headerLayout' 的值 '@layout/navHeader')。 (APT0000) (应用名称) C:\Projects\Project\File.axml(0,0):错误 APT0000:未找到资源 与给定名称匹配(在“菜单”处,值为“@menu/navMenu”)。 (APT0000) (应用名称)

有人知道我如何解决这个问题吗?

提前谢谢你

【问题讨论】:

你能把你的 .axml 文件的目录结构贴出来吗?所有布局都应该在 Resources/layout/ 中,菜单应该在 Resources/menu/ 中 所有布局都在 Resources/layout 文件夹中,navMenu.xml 在 Resources/menu 文件夹中 我不确定这一点,但我相信 navMenu.xml 实际上应该是 navMenu.axml(我的所有菜单都使用 .axml)——你能重命名,看看是否能解决问题? 同样的问题,有人回答吗? 【参考方案1】:

我有同样的问题。 我只是在标题布局文件的名称中加上小写字母就可以了。

之前(失败并显示相同的错误消息):

app:headerLayout="@layout/DrawerHeader"

之后:

app:headerLayout="@layout/drawerheader"

【讨论】:

对我不起作用。似乎是 Xamarin 中的巨大错误!【参考方案2】:

用小写字母命名您的布局文件和菜单。

app:headerLayout="@layout/drawerheader"
app:menu="@menu/drawermenu"

【讨论】:

这也是我的问题。大写名称适用于其他资源,但我猜不是全部。【参考方案3】:

遇到了同样的问题。估计是bug。导航标题视图和菜单视图的 C# 代码添加(在您的活动的 OnCreate() 方法中)对我来说很好。这是通过 NavigationView 方法 InflateMenu 和 inflateHeaderView 完成的。

编辑


先删除

app:headerLayout="@layout/navHeader"

app:menu="@menu/navMenu"

从您的导航抽屉布局中插入

navigationView = FindViewById<NavigationView>(Resource.Id.navView);    
navigationView.InflateHeaderView(Resource.Layout.navHeader);
navigationView.InflateMenu(Resource.Menu.navMenu);

在您有问题的活动的 onCreate() 方法中的某个位置。

【讨论】:

以上是关于在 Xamarin.Android 中找不到与给定名称(在“headerLayout”处)匹配的资源的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin android 代码中找不到“ACCESS_BACKGROUND_LOCATION”权限。我需要检查用户是不是已授予此权限

在表中找不到给定记录时如何处理游标中的异常

java.lang.IllegalArgumentException:从给定视图中找不到合适的父级。请提供有效的观点

使用scrapy中的itemloader返回在给定xpath中找不到的项的默认响应

dotnet 5 和 Xamarin Android:找不到导入的项目“Xamarin.Android.CSharp.targets”

使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib