2016-12-16 2 views
0

次のように私は、XAMLのエントリを持っている:キーボード

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

たびに:私のxaml.csで

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

は私がページのコンストラクタで次のコードを書かれているファイル入力欄をタップしてプレースホルダテキストを置き換えますが、キーボードは表示されません。私はキーボードを持ち上げるために再びタップする必要があります。

プレースホルダを置き換えてキーボードを表示するにはどうすればよいですか?

+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からのものであることを見つけることができる、とレンダラ対象物は、AndroidのネイティブでEditTextから継承さEntryEditTextです。

だから私は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 
{ 

} 

アンドロイドプロジェクトコード

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を2回クリックすると、Hintが表示されなくなりました。

プレースホルダテキストを削除しているなぜあなたはhttps://bugzilla.xamarin.com/

関連する問題