Android.Widget.AutoCompleteTextView 是来自 Android 的 View。
PCL 解决方案:
您不能在 Xamarin 表单 (PCL) ContentPage 上使用特定于平台的 View's。
要使用特定于平台的View,您应该使用custom render。
来自@JamesMontemagno 的blog post 显示了如何执行您需要的操作。
此代码是草稿示例请照此使用。
1 - 创建您自己的自定义 Xamarin.Forms 控件,该控件将在 Android 中呈现为 AutoCompleteTextView:
public class AutoCompleteView : View
{
// Place need properties here.
}
2 - 在 Android 项目中为 AutoCompleteView 添加渲染器:
[assembly: ExportRenderer(typeof(AutoCompleteView), typeof(AutoCompleteViewRenderer))]
namespace App.Droid
{
public class AutoCompleteViewRenderer : ViewRenderer<AutoCompleteView, AutoCompleteTextView>
{
// Initialize the AutoCompleteTextView
protected override void OnElementChanged (ElementChangedEventArgs<AutoComplete> e)
{
base.OnElementChanged (e);
if (e.OldElement != null || this.Element == null)
return;
var autoComplete = new AutoCompleteTextView(Forms.Context);
SetNativeControl (autoComplete);
}
// Use the control here.
protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) {
base.OnElementPropertyChanged (sender, e);
if (this.Element == null || this.Control == null)
return;
// variable this.Control is the AutoCompleteTextView, so you an manipulate it.
}
}
}
共享项目解决方案:
使用共享项目时,可以使用Native Embedding,例如:
...
var textView = new TextView (Forms.Context) { Text = originalText };
stackLayout.Children.Add (textView);
contentView.Content = textView.ToView();
...