2009-10-08 5 views
24

'u nasıl kullanacağımı anlamıyorum Ne yapmak istediğim, sanal klavyede görünen varsayılan "Done" etiketini değiştirmektir. Burada herhangi bir şans çalıştığım buydu:Android: setImeActionLabel

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

Ben Ancak bununla, o düğmeyi tıklamanın ele am mümkün:

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

Ben clueless olarak nasıl olduğum Şu an bu düğmedeki etiketi değiştirebilirim.

cevap

25

imeActionLabel tam ekran IME modunda sağ üstte görünen düğmenin etiketini ayarlar (yani, telefonunuz yatay konumda olduğunda). Düğmeyi klavyenin sağ alt köşesinde değiştirmek isterseniz, belirli bayrakları imeOptions'a iletebilirsiniz.

Bildiğim kadarıyla sen bir arama düğmesi istediğiniz gibi görünüyor, eylemlere (desteklenen bayrakların tam listesi için here bakınız) belirli bir dizi ile sınırlı olduğunuzu düğme için, ancak o zamandan beri bildiğimiz gibi, sahip tüm

yapmak

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH); 

Zihin Eğer bu düğme tam görünüm giriş yöntemine bağlı olacaktır: hafifçe ilk satırı ayarlayın ve IME_ACTION_SEARCH kullanmaktır. Varsayılan Android klavye, arama bayrağı için bir büyüteç gösterirken, Dokunmatik Giriş (HTC'nin klavyesi) hala bir geri dönüş düğmesi gösteren bu işaretin tamamen farkında değil gibi görünüyor.

+0

Bu ilginç. Emülatörde manzaraya geçtiğimde, yumuşak klavye artık görünmüyor. Ayrıca, Messaging uygulamasının örneğin "Bitti" düğmesi yerine bir surat (":-)") yerleştirdiğini fark ettim. Özel bir klavye düzeni mi kullanıyor? Bu arada, bahşiş için teşekkürler. – Felix

+3

Emülatör, yatay modda maruz kaldığı fiziksel bir klavyeyi taklit ettiği için yazılım klavyesinde görünmüyor (tıpkı açtığınız takdirde G1'de yumuşak klavyenin görünmeyeceği gibi). Klavyeyi, AVD için config.ini dosyasını değiştirerek devre dışı bırakabilirsiniz, 'hw.keyboard = no' ekleyerek. Mesajlaşma uygulamasına gelince, onun kaynağını daha yeni kontrol ettim ve sanırım smiley "inputType =" textShortMessage "öğesinin bir yan ürünüdür ve" Gönder "düğmesinin olmaması" imeOptions = "nedeniyle oluşur. flagNoEnterAction "', ama aslında test etmedim. Dikkat ederseniz, Touch Input her iki bayrağı da göz ardı ediyor gibi görünüyor. – mernen

+2

Özgün sorudaki koddan, bu "VEYA" kodunu eklerseniz, fiziksel klavyenin "dönüş" düğmesini kullanabilirsiniz: if (actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) – CircuitBreaker716