我在xaml中有一个条目如下:
.myBlock{
animation: fadeInOut 3s infinite;
}
@keyframes fadeInOut{
0%{
opacity: 0;
}
20%{
opacity: 1;
}
80%{
opacity: 1;
}
100%{
opacity: 0;
}
}
在我的xaml.cs文件中,我在页面构造函数中编写了以下代码:
<Entry x:name="userNameEntry" Placeholder="Name"/>
每当我点击输入字段时,占位符文本都会被替换,但键盘不会显示。我必须再次点击以调出键盘。
如何替换占位符并显示键盘?
答案 0 :(得分:0)
我认为发生的事情就是这里的种族状况。所以我认为你需要从Xaml实现onFocus事件并从后面的代码处理它。
<Entry x:name="userNameEntry" Placeholder="Name" Focused="userNameEntry_OnFocused"/>
并在
背后的代码中 private void userNameEntry_OnFocused(object sender, FocusEventArgs e)
{
userNameEntry.Placeholder = "";
}
尝试一下,如果它可以工作:)虽然我自己不会在用户开始输入之前删除占位符,因为这是它只是工作。
答案 1 :(得分:0)
我可以重现你找到的场景。通过检查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
时,它无法检测到点击事件。当我第二次点击Hint
时,EditText
消失了。
您可以将此问题报告给https://bugzilla.xamarin.com/