我可以重现您找到的场景。通过查看xamarin表单源代码的EntryRenderer可以发现
_textView.Hint = Element.Placeholder;
Hint属性来自android native的EditText,渲染器目标对象是EntryEditText,继承自android native的EditText。
所以我创建了一个 xamarin android 项目并使用带有提示的 EditText 如下代码:
public class MainActivity : Activity
{
EditText et;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
et = (EditText)FindViewById(Resource.Id.edittext);
et.Click += Et_Click;
}
private void Et_Click(object sender, System.EventArgs e)
{
et.Hint = "";
}
}
当我单击 EditText 时,键盘显示,同时提示消失了。
我还创建了 Entry 的客户渲染器,代码如下:
可移植代码
public class MyEditText : View
{
}
android项目代码
public class MyEditTestRenderer : ViewRenderer<MyEditText, EditText>,Android.Views.View.IOnClickListener
{
EditText et;
protected override void OnElementChanged(ElementChangedEventArgs<MyEditText> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
// perform initial setup
et = new EditText(this.Context);
SetNativeControl(et);
}
et.Click += Et_Click;
et.Hint = "name";
// et.SetOnClickListener(this);
}
private void Et_Click(object sender, EventArgs e)
{
et.Hint = "";
}
}
但是当我第一次点击EditText时它无法检测到点击事件。当我第二次单击EditText 时,Hint 消失了。
您可以将此问题报告给https://bugzilla.xamarin.com/