Jake
Jake

Reputation: 633

No resource found that matches the given name (at 'headerLayout') in Xamarin.Android

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

Answers (3)

MD Amanullah Hoque
MD Amanullah Hoque

Reputation: 161

Named Your layout file and menu with the small letter.

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

Upvotes: 1

Steph
Steph

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

FrkatSmrkat
FrkatSmrkat

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

Related Questions