cfl*_*y24 0 c# keyboard xamarin.android xamarin xamarin.forms
我正在尝试编写一个自定义渲染器,它允许我将'SearchBar'的键盘类型更改为Numeric.
这是我的渲染器:
[assembly: ExportRenderer(typeof(CustomSearchBar), typeof(SearchBarRenderer))]
namespace App.Droid.CustomRenderers
{
class CustomSearchBarRenderer : SearchBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
var customSearchBar = (CustomSearchBar)Element;
customSearchBar.keyboard = Keyboard.Numeric;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后是自定义控件:
public class CustomSearchBar : SearchBar
{
public Keyboard keyboard { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以及自定义控件的用法:
var _mySearchBar = new CustomSearchBar();
Run Code Online (Sandbox Code Playgroud)
我虽然有点偏僻.该OnElementChanged事件永远不会被命中,但即使它只是将自定义键盘属性设置为数字,而不是设置显示键盘的实际KeyboardType.不知道从哪里开始.任何帮助,将不胜感激.
小智 5
首先,我认为自定义渲染器的注册操作不正确.可能是为什么OnElementChanged方法没有运行
[assembly: ExportRenderer(typeof(CustomSearchBar), typeof(SearchBarRenderer))]
Run Code Online (Sandbox Code Playgroud)
应该
[assembly: ExportRenderer(typeof(CustomSearchBar), typeof(CustomSearchBarRenderer))]
Run Code Online (Sandbox Code Playgroud)
单击下一步更改键盘类型.
在您的代码中,您正在为ElementXamarin Forms元素设置键盘.你想要改变的Control是本机控制.
所以试一试:
对于android:
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
this.Control.SetInputType(/*your keyboard type choice*/);
}
Run Code Online (Sandbox Code Playgroud)
对于ios:
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
this.Control.KeyboardType = /*your keyboard type choice*/;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |