2016-03-03 34 views
6

Enter tuşu ile android özel klavye ile arama yapmak istiyorum, ancak çalışmaz.
Zaten Ben sadece google arama gibi bir arama metin alanına "Arama eylem" tetiklemek gerekiyor, anahtarlarını eşlediyseniz. Android custom InputMethodService'de anahtarla nasıl arama yapılır?

ben arama eylemi tetiklemek için bu kodu denedim ama çalışmıyor:

public class Keyboard extends InputMethodService 
    implements KeyboardView.OnKeyboardActionListener { 

@Override 
public void onStartInputView(EditorInfo info, boolean restarting) { 
    super.onStartInputView(info, restarting); 

    setInputView(onCreateInputView()); 

    switch (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION) { 

     case EditorInfo.IME_ACTION_SEARCH: 
      Toast.makeText(this, "test", Toast.LENGTH_SHORT).show(); 
      //Action Search 
      break; 
    } 
} 

Benim xml düzenini: Burada

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 

girmek anahtar olay üzerine yazarak benim yöntemidir :

<?xml version="1.0" encoding="UTF-8"?> 
<android.inputmethodservice.KeyboardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/keyboard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:keyPreviewHeight="60dp" 
    android:keyPreviewOffset="12dp" 
    android:keyPreviewLayout="@layout/preview" 
    android:visibility="visible"/> 

Benayarlamak için benim düzeninde herhangi EditText yok 210.

cevap

1

Anahtarlarınızı harita ve anahtar girmek üzerine, daha sonra içeride arama kodunuzu koymak zorunda.

@Override 
public void onKey(int primaryCode, int[] keyCodes) {  
    switch(primaryCode){ 

     case android.inputmethodservice.Keyboard.KEYCODE_DONE: 
      ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 
      break; 
    break; 
    } 
} 

durumda size here ve here bazı görebilirsiniz özel keyCode yok.

+0

Teşekkür deneyin. lütfen arama yapmam için bana yardım edin – John

+0

Peki, ne aramak istiyorsunuz? Bağlam nedir? Şimdiye kadar ne yaptın? Bence sadece arama koduna odaklanan ve açıklayan yeni bir soru açmanız daha iyi olur, ya da bu sorudaki niyetiniz, klavyede değil, arama kodu için yardım almaksa, sorunu düzeltin ve daha iyi açıklayın. –

+1

Ben cevabınızı düzenledim. Örneğin, bir kelimeyi yazdığımda ve özel klavyemde enter tuşuna bastığımda google play app store arama kutusunda arama yapmak istiyorum. yazdığım kod işe yaramadı. Bana yardımcı olabilir misiniz? teşekkür ederim – John

1

onun kod

public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // If the event is a key-down event on the "enter" button 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) 
        && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       // do ur stuff 
       return true; 
      } 
      return false; 
     } 
    });