2012-08-03 29 views
0

我想要選擇EditText字段中存在的所有文本,如果點擊相同,現在我可以實現這一點下面的代碼在Android 2.x和3.x,但不是在4.0。如果任何人有同樣的問題,請讓我知道如何解決這個問題。Android EditText selectAll()不起作用,如果只在Android 4.x相同的字段上點擊

@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    switch(v.getId()) { 
    case R.id.passcodetext1: 
     if(hasFocus) editText1.selectAll(); 
     break; 

    case R.id.passcodetext2: 
     if(hasFocus) editText2.selectAll(); 
     break; 

    case R.id.passcodetext3: 
     if(hasFocus) editText3.selectAll(); 
     break; 

    case R.id.passcodetext4: 
     if(hasFocus) editText4.selectAll(); 
     break; 
    } 

} 
+1

我有同樣的問題。用2.3.3都能正常工作,但用4.0.4 editText.selectAll(); onClick監聽器不起作用。 – Guntis 2013-01-24 07:54:23

+0

您可以通過在layout.xml中的EditText中添加此android:selectAllOnFocus =「true」來解決該問題。 – 2013-01-24 08:30:36

+0

問題是在光標已經在EditText(聚焦)的情況下。在我的情況下,它是庫存應用程序。如果用戶輸入無效的條形碼或想輸入另一個代碼,那麼如果光標已經在exittext光標處,則停留在起始位置。一種方法是點擊另一個edittext然後返回。在我的應用程序中,我改變了一點邏輯,我很好。 – Guntis 2013-01-24 15:33:51

回答

3

我剛好layout.xml增加一個屬性解決了這個。

android:selectAllOnFocus="true" 

早些時候,我沒有意識到這一點,但是這的確是對這類問題的一個很好的解決方案。

0

試試這個...

if(hasFocus) v.selectAll(); 
       ^^^^^^^^^^^ 
+0

它沒有工作。而這個問題只適用於4.x版本。 – 2012-08-03 10:55:06

0

把這個解決方案:https://stackoverflow.com/a/35527348/1504248

可能是你需要運行類似:

 Editable text = edit.getText(); 
     if (text.length() > 0) { 
      text.replace(0, 1, text.subSequence(0, 1), 0, 1); 
      edit.selectAll(); 
     } 

if(hasFocus)內。

相關問題