2011-09-23 42 views
1

我有幾個EditTexts,我已經將imeOptions設置爲actionDone。當我在模擬器中使用Android 2.1或Android 2.2運行我的應用程序時,虛擬鍵盤上的Enter鍵變爲「完成」。但是,(並且我沒有在模擬器中測試過),當我在運行Android 2.3(直2.3,Nexus S)的手機上運行我的應用程序時,虛擬鍵盤上的Enter鍵仍然存在一個返回按鈕並按下它進入EditText的換行符。ime選項動作與Android 2.3完成

如何使虛擬鍵盤上的返回鍵在Android 2.3中表現爲「完成」?

+1

約呼叫'setSingleLine()'在java代碼或如何使用'機器人:單線='在XML中 「真」? – kingori

+1

這使得「完成」按鈕出現,但文本不換行,並且EditText被強制爲單行。我想要一個包裝並具有「完成」按鈕的EditText。它在2.1和2.2上適當運行,但不適用於2.3。 – Andrew

+0

從2.3.4開始它似乎是一種錯誤。檢查此線程:http://stackoverflow.com/questions/6218574/android-nexus-s-edittext-settings-ignored-2-3-4 順便說一句,感謝kingori,這是足夠好的我的應用程序。 – Emilio

回答

2

我已經實施如下,它對我很好。 試試它可能會幫助你。

EditText m_etDone = (EditText) findViewById(R.id.am_etDone); 
EditText m_etSearch = (EditText) findViewById(R.id.am_etSearch); 
m_etDone.setOnEditorActionListener(new DoneOnEditorActionListener()); 
m_etSearch.setOnEditorActionListener(new DoneOnEditorActionListener());       
    class DoneOnEditorActionListener implements OnEditorActionListener {  
@Override 
public boolean onEditorAction(TextView p_v, int p_actionId, KeyEvent p_event) { 
    if (p_actionId == EditorInfo.IME_ACTION_DONE) 
{ 
    InputMethodManager m_imm = (InputMethodManager)p_v.getContext()  .getSystemService(Context.INPUT_METHOD_SERVICE); 
    m_imm.hideSoftInputFromWindow(p_v.getWindowToken(), 0); 
      return true; 
     } 
     else if(p_actionId == EditorInfo.IME_ACTION_SEARCH) 
     { 
      Toast.makeText(getApplicationContext(),"Search Text",Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
    return false; 
    } 
} 

版式文件:

<EditText 
    android:id="@+id/am_etDone" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="Enter some text" 
    android:imeOptions="actionNext" 
    android:singleLine="true" 
    android:imeActionLabel="Done"/>  
<EditText 
    android:id="@+id/am_etSearch" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="Enter search text" 
    android:imeOptions="actionSearch" 
    android:singleLine="true" 
    android:layout_below="@+id/am_etDone" 
    android:imeActionLabel="Search"/>