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

ena*_*000 2 android android-appcompat mvvmcross xamarin

我正在尝试在我的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>
Run Code Online (Sandbox Code Playgroud)

在我的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" />
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

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    
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激.

Pla*_*d3r 5

确保安装了Android Design Support Library.

你可以通过nuget(或Xamarin Component商店)获得它:

Install-Package Xamarin.Android.Support.Design
Run Code Online (Sandbox Code Playgroud)

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

支持库提供Android框架不提供的用户界面元素.例如,Android支持库提供了额外的布局类,例如DrawerLayout.这些课程遵循推荐的Android设计实践; 例如,设计库遵循材料设计原则,适用于多种版本的Android.

怎么headerLayout会包含在你的Resource.Designer.cs

如果您查看该文件的Android SDK文件夹(并包含Extras:Android Support Repository)attrs.xml:

Android的SDK \演员\机器人\ SUPPORT \设计\水库\值\ attrs.xml

您将能够在此文件中搜索headerLayoutdeclare-styleable属性.当您包含Design Support Library时,所有各种XML标记都将被引用到常量中,然后您可以在后面的代码中使用它们.