首页 > 解决方案 > Android.Views.InflateException: Binary XML file line #1: Error inflating Class BottomNavigationView

问题描述

我试图将 Toolbar、TabBarLayout 和 BottomNavigationView 添加到我的活动中。不添加工具栏,一切正常,但添加工具栏后,应用程序崩溃并出现错误:

Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.design.widget.BottomNavigationView

我正在使用线性布局。我尝试通过更改 layout_weight 和主题以及我可以在 stackoverflow 上找到或通过搜索 Google 找到的所有其他方法,但找不到解决方案。我正在分享我的布局、样式和活动代码。

activity_main.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="100">

    <include
        android:id="@+id/toolbar"
        layout="@layout/ToolbarLayout" />

    <android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/tablayout"
        android:background="@color/white"
        android:minHeight="?attr/actionBarSize"
        app:tabTextColor="@color/black"
        app:tabSelectedTextColor="@color/yellow"
        app:tabIndicatorColor="@color/yellow"
        android:layout_weight="10"/>

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/pager"
        android:layout_weight="82">
    </android.support.v4.view.ViewPager>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="?android:attr/windowBackground"
        app:menu="@menu/navigation"
        android:layout_weight="8"/>
</LinearLayout>

MainActivity.cs

using Android.App; using Android.OS; using Android.Runtime; using Android.Support.Design.Widget; using Android.Support.V4.View; using Android.Support.V7.App; using Android.Support.V7.Widget; using Android.Views;

namespace utfive {
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme")]
    public class MainActivity : AppCompatActivity, BottomNavigationView.IOnNavigationItemSelectedListener
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);
            SetSupportActionBar(FindViewById<Toolbar>(Resource.Id.toolbar));
            BottomNavigationView navigation = FindViewById<BottomNavigationView>(Resource.Id.navigation);
            navigation.SetOnNavigationItemSelectedListener(this);

            LoadPager();
        }

        private void LoadPager()
        {
            ViewPager viewPager = (ViewPager)FindViewById(Resource.Id.pager);
            PageAdapter myPagerAdapter = new PageAdapter(SupportFragmentManager);
            viewPager.Adapter = myPagerAdapter;
            TabLayout tabLayout = (TabLayout)FindViewById(Resource.Id.tablayout);
            tabLayout.SetupWithViewPager(viewPager);
        }

        public bool OnNavigationItemSelected(IMenuItem item)
        {
            switch (item.ItemId)
            {
                case Resource.Id.navigation_home:
                    //textMessage.SetText(Resource.String.title_home);
                    return true;
                case Resource.Id.navigation_dashboard:
                    //textMessage.SetText(Resource.String.title_dashboard);
                    return true;
                case Resource.Id.navigation_notifications:
                    //textMessage.SetText(Resource.String.title_notifications);
                    return true;
            }
            return false;
        }
    } }

样式.xml

<resources>

  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="colorPrimary">@color/yellow</item>
    <item name="colorPrimaryDark">@color/black</item>
    <item name="colorAccent">@color/white</item>
  </style>

  <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/yellow</item>
    <item name="colorPrimaryDark">@color/black</item>
    <item name="colorAccent">@color/white</item>
  </style>
</resources>

工具栏布局.axml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/actionBarSize"
    android:background="@color/white"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

有人可以帮我吗?

标签: c#androidvisual-studioxamarin.android

解决方案


  1. 删除 id 属性:android:id="@+id/toolbar"从包含标签中。它应该看起来像这样

    layout="@layout/toolbar_layout" />
    
  2. 你的 ToolbarLayout 文件名不对应该是这样的:toolbar_layout 没有大写字母。


推荐阅读