首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Xamarin表单- Android -更改每个内容页面的向上/向后箭头颜色

Xamarin表单- Android -更改每个内容页面的向上/向后箭头颜色
EN

Stack Overflow用户
提问于 2018-08-02 23:17:38
回答 1查看 390关注 0票数 1

我已经为此挣扎了几天了,我已经尝试了很多关于SO的文章,但似乎没有一篇符合我的要求,我已经设置了Toolbar.xml并将主题设置如下

代码语言:javascript
代码运行次数:0
运行
复制
<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?

干杯安东尼

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 01:25:03

是一个工具栏还是一个ActionBar?

它是一个工具栏,而不是ActionBar

代码语言:javascript
代码运行次数:0
运行
复制
Android.Support.V7.Widget.Toolbar

你可以通过ToolBar.NavigationIcon.SetColorFilter(...)设置颜色,但你必须先找到它,因为Xamarin不会通过SetSupportActionBar应用它...

红色后退按钮PlatformEffect示例:

代码语言:javascript
代码运行次数:0
运行
复制
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()
    {
    }
}

用法:

代码语言:javascript
代码运行次数:0
运行
复制
someControl.Effects.Add(Effect.Resolve("Effects.RedBackButtonColorNameEffect"));

(请记住设置您的ResolutionGroupNameExportEffect属性...)

注意:如果您在页面级别或容器级别附加效果,Xamarin不会在PlatformEffect中应用Control实例的值,因此这将不起作用。您可以将活动上下文存储在MainActivity的某个位置(静态变量),以便解决该问题,从而拥有合适的Context来进行搜索。

注意!:PlatformEffects在很多方面都有缺陷,特别是因为它们从来没有被收集过,因此是一个内存泄漏,它们很适合作为快速示例/原型,但使用自定义渲染器来生成代码)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51657101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档