【发布时间】:2017-11-29 01:33:09
【问题描述】:
我正在尝试从自定义渲染器访问操作栏(我知道我可以使用 toolbar.xml,但它不适合我的情况)。 这是我的代码
[assembly: ExportRenderer(typeof(NavigationPage), typeof(NoviNavigationPageRenderer))]
namespace NoviMobileTest.Droid.Renderers
{
public class NoviNavigationPageRenderer : PageRenderer
{
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
var actionBar = ((Activity)Context).ActionBar;
actionBar.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.YourImageInDrawable));
}
}
}
变量actionbar 始终为空。我也尝试过扩展 NavigationRenderer,但我得到了类转换异常。我见过很多人有同样的问题,但令人惊讶的是没有例子可以看到。我想如何获得工具栏的实例?
注意:
我的 MainActivity 扩展了FormsAppCompatActivity
提前致谢
【问题讨论】:
-
在您声明 actionBar 的行中,您使用 Xamarin.Forms.Forms.Context 的“上下文”?
-
不,它是 Android.Content.Context。我也尝试过 Forms 但仍然返回 null
-
那是你的问题。该上下文不是您应用中的实际活动,因此它没有操作栏。您需要像 Wilson Vargas 在他的回答中那样使用您应用的当前活动。
标签: c# xamarin.forms custom-renderer