0
在Xamarin Forms应用程序中,我试图创建一个自定义Entry
实现,该实现在聚焦时不会自动显示软键盘。目标是在页面上使用此条目的一个实例以及其他常规条目。Xamarin形成隐藏软键盘的自定义条目渲染器
我熟悉的建议Xamarin窗体模式自定义视图渲染,并且已成功创建两个入口和它的渲染器,如下:
public class BlindEntry : Entry
{
}
[assembly: ExportRenderer(typeof(BlindEntry), typeof(BlindEntryRenderer))]
public class BlindEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.FocusChange += Control_FocusChange;
}
}
private void Control_FocusChange(object sender, FocusChangeEventArgs e)
{
if (e.HasFocus)
{
// What goes here?
}
else
{
// What goes here?
}
}
}
显示和隐藏软键盘,我想一个来自this question的建议将提供解决方案,但对于哪种方法是最佳方法有许多不同意见。另外,即使在选择合适的模式后,我也不清楚如何从上述自定义渲染器中访问所需的原生Android API。
例如,我知道我可以使用下面的呼叫(从Activity
内)获得到一个InputMethodManager
的引用,但是它并不明显如何从渲染器内引用的含活性:
var imm = GetSystemService(InputMethodService)
非常感谢您的建议。
添
这看起来像一个非常优雅的解决方案,但分配被忽略。如果在设置InputType属性值后立即设置断点,我可以看到它设置为Android.Text.InputTypes.DatetimeVariationNormal。 –