xamarin NavigationView为app:headerLayout找不到找不到资源的错误

时间:2016-06-04 00:37:49

标签: android xamarin mvvmcross android-appcompat

我正在尝试在我的Xamarin Android项目中设置NavigationView。我的Main.axml文件结构如下:

<?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_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include
            layout="@layout/toolbar" />
        <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/navmenu"
        app:headerLayout="@layout/headerdrawerlayout" />
</android.support.v4.widget.DrawerLayout>

在我的packages.config中,我有AppCompat包(以及其他):

<package id="MvvmCross.Droid.Support.V7.AppCompat" version="4.1.7" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" />

我收到编译错误:

No resource identifier found for attribute 'headerLayout' in package 'mycompany.myapp'  myapp.Android   C:\Users\JP\Documents\Visual Studio 2015\Projects\MyApp\MyApp.Android\Resources\layout\Main.axml    

Resource.designer.cs文件不应自动引入这些属性吗?我必须承认有点不确定这个过程是如何运作的。它可能是某个地方的版本冲突吗? res-auto如何融入一切?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

确保已安装Android Design Support Library。

您可以通过nuget(或Xamarin Component store

获取
Install-Package Xamarin.Android.Support.Design

DrawerLayout是Android支持库的一项功能,它依赖于设计支持库,因为它是一种材料设计控件。由于支持API 21(Lollipop)上的材料设计是可选的,因此许多Android支持库对设计支持库没有很大的依赖性。但是,就DrawerLayout而言,它是required despency

  

支持库提供了非提供的用户界面元素   Android框架。例如,Android支持库提供   其他布局类,如DrawerLayout。这些课程如下   推荐Android设计实践;例如,设计库   以一种可行的方式遵循材料设计的原则   许多版本的Android。

headerLayout

包含Resource.Designer.cs的方式

如果您查看文件attrs.xml的Android SDK文件夹(并包含附加内容:Android支持存储库):

  

Android的SDK \额外\机器人\支持\设计\ RES \值\ attrs.xml

您将能够在此文件中搜索headerLayout declare-styleable属性。当您包含设计支持库时,所有各种XML标记都将被引用到常量中,然后您可以在后面的代码中使用它们。