Xamarin 表单四舍五入 SearchHandler

Posted

技术标签:

【中文标题】Xamarin 表单四舍五入 SearchHandler【英文标题】:Xamarin Forms Rounded SearchHandler 【发布时间】:2020-02-24 13:42:21 【问题描述】:

我正在 Xamarin Forms 中测试新的 Shell 页面。 我想知道搜索处理程序是否可以个性化,例如在搜索角上应用圆形效果。 我试图重新定义 SearchHandler 的模板,但它只是改变了 Search Handler 的结果请求的外观(如何向用户显示建议)。 非常感谢您的帮助!

【问题讨论】:

请发布您目前尝试过的最少代码 sn-p。 问题是:有可能吗?因此,如果您可以开始回答这个问题:) 我无法与您分享 sn-p 因为我不知道如何开始。我已经尝试过:效果(不在 SearchHandler 上启动)我也尝试过 Shell Renderer(我认为我可以走得更远,也许是最好的方法?)。 【参考方案1】:

经过几次测试我回来了。

我找到了一种简单的方法。

Shell App的Top Navigation Bar,有一个“Shell.TitleView”标签。

您可以在此标签内定义个性化模板。 所以我删除了“SearchHandler”并在“Shell.TitleView”内部实现了一个带有圆角的自定义搜索栏。 它工作得很好。 如果需要,我可以给你样品。

如果您知道另一种方法,我将很乐意对其进行测试。

谢谢

【讨论】:

你能举个例子吗?【参考方案2】:

如果在 Shell Application 中使用SearchHandler,我认为不可能实现圆角SearchHandler

首先,关于SearchHandler appearance,没有办法改变它的回合:

BackgroundColor,颜色类型,是搜索框文本的背景颜色。 CancelButtonColor,颜色类型,是取消按钮的颜色。 CharacterSpacing,double 类型,是 SearchHandler 文本的字符间距。 FontAttributes,FontAttributes 类型,指示搜索框文本是斜体还是粗体。 FontFamily,字符串类型,是用于搜索框文本的字体系列。 FontSize,double 类型,是搜索框文本的大小。 HorizontalTextAlignment,TextAlignment 类型,是搜索框文本的水平对齐方式。 PlaceholderColor,颜色类型,是占位符搜索框文本的颜色。 TextColor,颜色类型,是搜索框文本的颜色。 VerticalTextAlignment,TextAlignment 类型,是搜索框文本的垂直对齐方式。

第二,如果使用Shell Custom Renderers在NavigationController中也找不到SearchBar

例如在 ios shell 渲染器中:

public class CustomNavBarAppearanceTracker : IShellNavBarAppearanceTracker

    public void Dispose()
    
        //throw new NotImplementedException();
    

    public void ResetAppearance(UINavigationController controller)
    
        //throw new NotImplementedException();
    

    public void SetAppearance(UINavigationController controller, ShellAppearance appearance)
    
        //throw new NotImplementedException();
        //var seabar = controller.SearchDisplayController.SearchBar;
        controller.NavigationBar.BackgroundColor = UIColor.Red;
        Console.WriteLine("-----"+controller.NavigationItem.SearchController.SearchBar);
    

    public void UpdateLayout(UINavigationController controller)
    
        //throw new NotImplementedException();
    

输出是:controller.NavigationItem.SearchController.SearchBar = null

如果不使用SearchHandler,可以尝试使用Custom SearchBar Renderer来实现。

【讨论】:

感谢您的回答 :) 是的,我已经检查了搜索处理程序外观中是否存在角半径属性。因此,要得出结论,如果我想修改角半径,我不必使用搜索处理程序,而是实现自定义搜索处理程序。对于搜索栏,不需要自定义渲染器,我可以用 Frame 包装它并将角半径应用于 Frame。 @lalilulelo 是的,这也是实现它的好点。如果可行,您可以在这里分享解决方案。 @lalilulelo 很高兴看到解决方案,这是实施它的好方法!

以上是关于Xamarin 表单四舍五入 SearchHandler的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单 TabbedPage

Xamarin 和 Xamarin 表单的符号包(PDB 文件)

Xamarin 表单发送图像

使用 Xamarin.Mobile 读取 Xamarin 表单中的联系人时出错

重复服务呼叫 - Xamarin 表单

如何将 android 活动导航到 xamarin 表单