2009-10-08 10 views
24

가상 키보드에 표시되는 기본 '완료'라벨을 변경하고 싶습니다. 여기에 내가 운이없이 시도한 작업은 다음과 같습니다Android : setImeActionLabel을 사용하는 방법을 모르겠습니다.

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_DONE); 
mSearchInput.setImeActionLabel(getString(R.string.search_action_label), EditorInfo.IME_ACTION_DONE); 

I 그러나이와, 그 버튼에 클릭을 처리 할 오전 수 :

mSearchInput.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      performSearch(); 
      return true; 
     } 
     return false; 
    } 
}); 

내가 방법으로 우둔 해요 나는 그 버튼의 라벨을 지금 바꿀 수있다.

답변

25

imeActionLabel은 전체 화면 IME 모드 (즉, 휴대 전화가 가로 방향)에서 오른쪽 상단에 표시되는 버튼의 라벨을 설정합니다. 키보드의 오른쪽 하단에있는 버튼을 변경하려면 imeOptions에 특정 플래그를 전달할 수 있습니다.

내가 아는 한, 해당 버튼에 대해 특정 일련의 동작으로 제한됩니다 (지원되는 플래그의 전체 목록은 here 참조). 그러나 검색 버튼이 필요하므로 모든 작업을 수행해야합니다.

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH); 

마음이, 그 버튼의 정확한 모양은 입력 방법에 따라 달라집니다 : 약간의 첫 번째 라인을 조정하고 IME_ACTION_SEARCH을 사용하는 것입니다. 기본 안드로이드 키보드는 검색 플래그에 대한 돋보기를 표시하지만 터치 입력 (HTC의 키보드)은 해당 플래그를 전혀 모르는 것처럼 보인 채 반환 버튼을 표시합니다.

+0

궁금한 점이 있습니다. 에뮬레이터에서 가로로 전환하면 소프트 키보드가 더 이상 나타나지 않습니다. 또한 Messaging 애플리케이션에서 "완료"버튼 대신 스마일리 (":-)"를 입력하는 것으로 나타났습니다. 그것은 사용자 정의 키보드 레이아웃을 사용합니까, 아니면 무엇입니까? 팁을 주셔서 감사합니다. – Felix

+3

에뮬레이터가 가로 모드에서 노출되는 실제 키보드를 시뮬레이트하기 때문에 소프트 키보드가 나타나지 않습니다 (마치 열린 상태에서 소프트 키보드가 G1에 나타나지 않는 것처럼). 'hw.keyboard = no'를 추가하여 AVD에 대한 config.ini 파일을 수정하여 키보드를 비활성화 할 수 있습니다. 메시징 응용 프로그램에 대해서는 방금 소스를 확인한 후 스마일리가'inputType = "textShortMessage"의 부산물이고 "보내기"버튼이 없다는 것은 imeOptions = " flagNoEnterAction "',하지만 실제로 테스트하지 않았습니다. 터치 입력이 두 플래그를 모두 무시하는 것 같습니다. – mernen

+2

원래 질문의 코드에서이 "OR"코드를 추가하면 물리적 키보드의 "return"버튼을 설명 할 수 있습니다. if (actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) – CircuitBreaker716