键盘

2016-12-16 46 views
0

我在XAML中的条目如下:键盘

<Entry x:name="userNameEntry" Placeholder="Name"/> 

在我xaml.cs文件我写了下面的代码在页面的构造函数:

userNameEntry.Focused += (sender, e) => 
{ 
userNameEntry.Placeholder = ""; 
} 

每当我点击输入字段占位符文本被替换,但没有显示键盘。我必须再次点击才能弹出键盘。

如何替换占位符并显示键盘?

+1

?它会自行消失,并在场地空时再次显示。 – irreal

+0

只有当我开始输入时,占位符才被删除。我希望占位符在输入焦点时被移除。 –

回答

0

我想这里会发生什么样的种族情况。所以我认为你需要从Xaml实现onFocus事件并从后面的代码中处理它。

<Entry x:name="userNameEntry" Placeholder="Name" Focused="userNameEntry_OnFocused"/> 

,并在后面

private void userNameEntry_OnFocused(object sender, FocusEventArgs e) 
{ 
    userNameEntry.Placeholder = ""; 
} 

代码尝试,如果它的工作:)虽然我自己的用户开始输入,因为这是将它简单的工作之前,我不会删除占位符。

+0

感谢您的回复。但同样的事情正在发生,键盘只会在双击时弹出。 –

0

我可以重现您找到的场景。通过检查xamarin形式的源代码EntryRenderer我们可以发现,

_textView.Hint = Element.Placeholder;

Hint属性是Android原生EditText,并且渲染目标对象是EntryEditText是从EditText在Android原生继承。

所以我创建xamarin机器人的项目和使用的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键盘节目,并在同一时间的提示消失。

我还创建条目的客户呈现如下面的代码:

便携式代码

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/