2015-11-04 164 views
1

你好,我剛剛在一個Android項目中開始了Xamarin,並且我在edittext的按鍵時遇到了一個問題。在我的第一個Edittext上輸入Enter時,它將焦點放在Edittext(txtArtikel)上,但是這個Edittext的按鍵被觸發並跳轉到第三個Edittext。所以它只用一個Enter鍵即可跳過我的第二個Edittext。誰能幫我?Xamarin Android Edittext Keypress也執行

txtArtikel.KeyPress += txtArtikelPress; 

private void txtArtikelPress(object sender, View.KeyEventArgs e) 
{ 
    e.Handled = false; 
    if (e.KeyCode == Keycode.Enter) 
    { 
     txtAantal.RequestFocus(); 
    } 
} 

編輯

我仍然與按鍵時工作,現在正在尋找一個進入和退出。當txtWerf爲空時,它跳轉到txtArtikel,但是當它包含文本時,它會轉到txtAantal。

private void txtWerfPress(object sender, View.KeyEventArgs e) 
{ 
    if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Down) 
    { 
     if (txtWerf.Text.Trim() != "") 
     { 
      if (txtArtikel.RequestFocus()) 
       e.Handled = true; 
     } 
    } 
    else 
     e.Handled = false; 
} 

private void txtArtikelPress(object sender, View.KeyEventArgs e) 
{ 
    if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Down) 
    { 
     if (txtArtikel.Text.Trim() != "") 
     { 
      if (txtAantal.RequestFocus()) 
       e.Handled = true; 
     } 
    } 
    else if (e.KeyCode == Keycode.Escape && e.Event.Action == KeyEventActions.Down) 
    { 
     if (txtWerf.RequestFocus()) 
      e.Handled = true; 
    } 
    else 
     Scanner.CheckForScannedData(sender, ref e); 
     e.Handled = false; 
} 

private void txtAantalPress(object sender, View.KeyEventArgs e) 
{ 
    if (e.KeyCode == Keycode.Escape && e.Event.Action == KeyEventActions.Down) 
    { 
     if (txtArtikel.RequestFocus()) 
      e.Handled = true; 
    } 
    else 
     e.Handled = false; 
} 

回答

0

你不需要爲了將焦點設置到下一個EditText處理KeyPress事件。 Android有一個很好的算法,可以在編輯完成後處理焦點。

當您刪除事件處理程序時,應用程序如何按Enter鍵操作?它是否將重點設置在正確的EditText?如果他把注意力放在錯誤的觀點上,那麼你應該看看如何去 Move to another EditText when Soft Keyboard Next is clicked on Android

如果焦點完全沒有改變,那麼你應該告訴Android當用戶使用android:imeOptionshttp://developer.android.com/guide/topics/ui/controls/text.html#Actions完成他的輸入後該怎麼做。

+0

thx爲您的答案。我嘗試了imeOptions,但是使用actionNext它只是在同一個editText中進入一個新行。當事件處理程序被移除時也會發生這種情況。在Keydown中,我還需要檢查editText是否包含任何文本。 – NiAu