c# - 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"/>
有人可以帮我吗?
解决方案
删除 id 属性:
android:id="@+id/toolbar"
从包含标签中。它应该看起来像这样layout="@layout/toolbar_layout" />
你的 ToolbarLayout 文件名不对应该是这样的:toolbar_layout 没有大写字母。
推荐阅读
- ruby - 打包一个 Git Gem 以部署到 Ruby Lambda 运行时
- java - Java:使用扫描仪根据用户输入构造二维矩阵数组
- php - file_put_contents 通过 PHP 中的 API 上传多张图片
- amazon-web-services - Ec2 通过 AMI、DNS 和 SSL 自动化
- boost - 修改 BOOST_PP_SEQ
- python - 在 pandas.period 中计算四分之一长度
- javascript - 如何将 API 调用的结果设置为 Recoil atom 的默认值?
- php - Slack API 中的附件出现意外错误
- node.js - 我无法在 node.js 中保存请求请求的响应
- c++ - QtCreator 如何不进入 Qt 库源代码?