0

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

4

2 回答 2

1

经过几次测试,我回来了。

我找到了一种方法来轻松做到这一点。

对于 Shell App 中的顶部导航栏,有一个“Shell.TitleView”标签。

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

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

谢谢

于 2020-02-26T13:01:18.047 回答
0

如果在 Shell Application 中使用,我认为不可能实现 Rounded 。SearchHandlerSearchHandler

首先,关于SearchHandler 的外观,有没有办法改变它的 Round :

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

其次,如果使用Shell Custom Renderers也找不到SearchBarNavigationController

例如在 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来实现它。

于 2020-02-25T06:53:03.210 回答