xamarin.forms - 按 ID 查找视图(Resource.Id.toolbar) 返回 null
问题描述
我使用这个例子: https ://github.com/UdaraAlwis/Xamarin-Playground/tree/master/XFNavBarBackBtnClickOverride 。
但是 FindViewById(Resource.Id.toolbar) 返回null。在新项目中,此示例有效。在我的项目不工作。我还能检查什么?
MainAcitvity.cs
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(this, bundle);
Forms.Init(this, bundle);
CrossCurrentActivity.Current.Init(this, bundle);
Rg.Plugins.Popup.Popup.Init(this, bundle);
ToastNotification.Init(this);
Xamarin.FormsMaps.Init(this, bundle);
DependencyService.Register<ToastNotification>();
LoadApplication(new App());
Toolbar toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
}
工具栏.xml
<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:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
样式.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MainTheme" parent="MainTheme.Base">
</style>
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">#2196F3</item>
<item name="colorPrimaryDark">#1976D2</item>
<item name="colorAccent">#172239</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
<item name="android:textAllCaps">false</item>
</style>
<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#FF4081</item>
</style>
<color name="ListViewHighlighted">@layout/gradient</color>
</resources>
解决方案
以下行
Toolbar toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
当您没有将工具栏定义为Android.Support.V7.Widget.Toolbar
时,它将被初始化为Android..Widget.Toolbar
。因此该方法FindViewById
永远不会在 xml 中找到工具栏。
而是将其作为以下行。
Android.Support.V7.Widget.Toolbar toolbar = this.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
您需要MainPage
在 app.xaml.cs 中将其设置为 NavigationPage。
MainPage = new NavigationPage(new xxxPage());
推荐阅读
- python - 无法将 QLineEdit 输入转换为浮点数
- javascript - 在事件处理程序中引用 `this` vue 组件
- node.js - 我的电子商务网站出现错误,“'X' is not defined no-undef”
- kubernetes - 为 Minikube Ingress 启用 SSLv3
- .net - 我可以使用 powershell 删除预编译的 .NET C# dll 的清单吗
- java - 使用 Spring Boot 下载 .xls 文件 y Apache POI 不起作用
- ios - UIImageView 圆形 swift
- c# - 嵌套的异步方法太多。那是问题吗?
- python - 如何在 Django 中创建链接以使其他用户无法访问它们?
- azure - 如何在函数应用中引用 Azure Key Vault 中的密钥?