2009-10-08 6 views
24

Chcę zmienić domyślną etykietę "Gotowe", która pojawi się na wirtualnej klawiaturze. Oto co próbowałem bez powodzenia:Android: Nie rozumiem, jak używać setImeActionLabel

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

I am stanie jednak obsłużyć kliknij na tym przycisku, z tego:

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; 
    } 
}); 

Jestem pojęcia, jak W tej chwili mogę zmienić etykietę tego przycisku.

Odpowiedz

25

Ustawienie imeActionLabel powoduje ustawienie etykiety przycisku wyświetlanego w prawym górnym rogu w trybie pełnoekranowym IME (to znaczy, gdy telefon jest w orientacji poziomej). Jeśli chcesz zmienić przycisk na prawy dolny róg klawiatury, możesz przekazać pewne flagi do imeOptions.

Z tego co mi wiadomo, dla tego przycisku ograniczono się do określonego zestawu działań (patrz here, aby uzyskać pełną listę obsługiwanych flag), ale ponieważ wydaje się, że potrzebujesz przycisku wyszukiwania, wszystko co musisz zrobić jest nieznacznie dopasować swój pierwszy wiersz i użyć IME_ACTION_SEARCH:

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH); 

pamiętajcie, dokładny wygląd tego przycisku zależy od metody wprowadzania. Domyślna klawiatura Androida pokazuje lupę dla flagi wyszukiwania, podczas gdy Touch Input (klawiatura HTC) wydaje się zupełnie nieświadoma tej flagi, wciąż wyświetlając przycisk powrotu.

+0

To ciekawe. Kiedy przełączam się na krajobraz w emulatorze, miękka klawiatura już się nie pojawia. Zauważyłem również, że aplikacja Wiadomości na przykład umieszcza buźkę (":-)") zamiast przycisku "Gotowe". Czy używa niestandardowego układu klawiatury, czy co? Dzięki za cynk, przy okazji. – Felix

+3

Miękka klawiatura nie jest wyświetlana, ponieważ emulator symuluje fizyczną klawiaturę wyświetlaną w trybie poziomym (tak jak miękka klawiatura nie pojawi się na G1, jeśli ją otworzysz). Możesz wyłączyć klawiaturę modyfikując plik config.ini dla AVD, dodając 'hw.keyboard = no'. Jeśli chodzi o aplikację Wiadomości, właśnie sprawdziłem jej źródło i domyślam się, że buźka jest produktem ubocznym 'inputType =" textShortMessage "', a brak przycisku "Wyślij" wynika z "imeOptions =" flagNoEnterAction "', ale tak naprawdę nie przetestowałem tego. Pamiętaj, że Touch Input ignoruje obie flagi. – mernen

+2

Z kodu w pierwotnym pytaniu można podać przycisk "powrotu" fizycznej klawiatury, jeśli po prostu dodajesz ten kod "LUB": if (actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) – CircuitBreaker716

Powiązane problemy