我已经为此挣扎了几天了,我已经尝试了很多关于SO的文章,但似乎没有一篇符合我的要求,我已经设置了Toolbar.xml并将主题设置如下
<style name="ToolbarStyle" parent="Theme.AppCompat.Light">
<!-- Customize color of navigation drawer icon and back arrow -->
<item name="colorControlNormal">@color/white</item>
</style>
这在每个应用程序的基础上工作,但我需要根据我所在的内容页面在白色和黑色箭头之间切换,我也尝试过自定义渲染器,但这不是动态工作
即使我可以澄清,Xamarin forms导航是一个工具栏还是一个ActionBar?
干杯安东尼
发布于 2018-08-03 01:25:03
是一个工具栏还是一个ActionBar?
它是一个工具栏,而不是ActionBar
Android.Support.V7.Widget.Toolbar
你可以通过ToolBar.NavigationIcon.SetColorFilter(...)设置颜色,但你必须先找到它,因为Xamarin不会通过SetSupportActionBar
应用它...
红色后退按钮PlatformEffect
示例:
public class RedBackButtonColorNameEffect : PlatformEffect
{
protected override void OnAttached()
{
void ViewGroups(ViewGroup viewGroup)
{
for (int i = 0; i < viewGroup.ChildCount; i++)
{
Android.Views.View v = viewGroup.GetChildAt(i);
switch (v)
{
case Toolbar tb:
tb.NavigationIcon?.SetColorFilter(viewGroup.Resources.GetColor(Android.Resource.Color.HoloRedDark), PorterDuff.Mode.SrcAtop);
return;
case ViewGroup vg:
ViewGroups(vg);
break;
}
}
}
var rootView = (Control.Context as AppCompatActivity).FindViewById(Android.Resource.Id.Content).RootView as ViewGroup;
ViewGroups(rootView);
}
protected override void OnDetached()
{
}
}
用法:
someControl.Effects.Add(Effect.Resolve("Effects.RedBackButtonColorNameEffect"));
(请记住设置您的ResolutionGroupName
和ExportEffect
属性...)
注意:如果您在页面级别或容器级别附加效果,Xamarin不会在PlatformEffect中应用Control
实例的值,因此这将不起作用。您可以将活动上下文存储在MainActivity的某个位置(静态变量),以便解决该问题,从而拥有合适的Context
来进行搜索。
注意!:PlatformEffects在很多方面都有缺陷,特别是因为它们从来没有被收集过,因此是一个内存泄漏,它们很适合作为快速示例/原型,但使用自定义渲染器来生成代码)。
https://stackoverflow.com/questions/51657101
复制相似问题