我正在尝试在我的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如何融入一切?
任何帮助都将不胜感激。
答案 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标记都将被引用到常量中,然后您可以在后面的代码中使用它们。