Reputation: 633
I'm creating Android app using Xamarin for Android. I want to use in my app NavigationDrawer, so I downloaded and installed 'Android Design Library' from Xamarin Components Store. Then I edited my layout for this:
<?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_height="match_parent"
android:layout_width="match_parent"
android:fitsSystemWindows="true">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/articlesListView" />
<android.support.design.widget.NavigationView
android:id="@+id/navView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
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_width="match_parent"
android:layout_height="192dp"
android:background="?attr/colorPrimaryDark"
android:padding="16dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:orientation="vertical"
android:gravity="bottom">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Username"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
</LinearLayout>
and menu/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>
Unfortunately while compiling, I received following error:
C:\Project\Project\File.axml: Error APT0000: No resource found that matches the given name (at 'headerLayout' with value '@layout/navHeader'). (APT0000) (AppName) C:\Projects\Project\File.axml(0,0): Error APT0000: No resource found that matches the given name (at 'menu' with value '@menu/navMenu'). (APT0000) (AppName)
Somebody knows how I may solved this problem?
Thank you in advance
Upvotes: 4
Views: 2389
Reputation: 161
Named Your layout file and menu with the small letter.
app:headerLayout="@layout/drawerheader"
app:menu="@menu/drawermenu"
Upvotes: 1
Reputation: 12212
I had the same issue. I simply put lower case letters in the name of the header layout file and it worked.
Before (Failing with same error message):
app:headerLayout="@layout/DrawerHeader"
After:
app:headerLayout="@layout/drawerheader"
Upvotes: 9
Reputation: 9
Had the same problem. Guess it is a bug. C# code addition (in OnCreate() method of your activity) of navigation header view and menu view works fine for me. That is done with NavigationView methods InflateMenu and inflateHeaderView.
EDIT
First delete
app:headerLayout="@layout/navHeader"
and
app:menu="@menu/navMenu"
from your Navigation Drawer layout and insert
navigationView = FindViewById<NavigationView>(Resource.Id.navView);
navigationView.InflateHeaderView(Resource.Layout.navHeader);
navigationView.InflateMenu(Resource.Menu.navMenu);
somewhere in onCreate() method of your activity in question.
Upvotes: 0