我正在Xamarin Forms中测试新的Shell页面。我想知道搜索处理程序是否可以个性化,例如在搜索角应用圆角效果。我试图重新定义搜索处理程序的模板,但它只是改变了搜索处理程序结果请求的外观(如何向用户显示建议(。非常感谢你的帮助!
我在几次测试后回来了。
我找到了一种简单的方法。
对于Shell应用程序中的顶部导航栏,有一个"Shell.TitleView"标记。
您可以在此标记中定义个性化模板。所以我删除了"SearchHandler",并在"Shell.TitleView"中实现了一个带有圆角的自定义搜索栏。它工作得很好。如果需要,我可以给你样品。
如果你知道另一种方法,我很乐意测试它。
感谢
我认为如果在Shell应用程序中使用SearchHandler
,则不可能实现舍入的SearchHandler
。
首先,关于SearchHandler的外观,没有办法更改它的回合:
BackgroundColor
,类型为Color,是搜索框文本的背景颜色- 类型为Color的
CancelButtonColor
是取消按钮的颜色 - 类型为double的
CharacterSpacing
是SearchHandler文本的字符间距 - 字体属性类型的
FontAttributes
指示搜索框文本是斜体还是粗体 - 字符串类型的
FontFamily
是用于搜索框文本的字体族 - 类型为double的
FontSize
是搜索框文本的大小 - 类型为TextAlignment的
HorizontalTextAlignment
是搜索框文本的水平对齐方式 - 类型为Color的
PlaceholderColor
是占位符搜索框文本的颜色 - 类型为Color的
TextColor
是搜索框文本的颜色 - 类型为TextAlignment的
VerticalTextAlignment
是搜索框文本的垂直对齐方式
Second,如果使用Shell自定义渲染器,也无法在NavigationController
中找到SearchBar
。
例如,在iOS外壳渲染器中:
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来实现它。