2016-03-03 17 views
6

Tôi muốn tìm kiếm bằng bàn phím tùy chỉnh Android của mình bằng phím enter, nhưng nó không hoạt động.
Tôi đã ánh xạ các phím, tôi chỉ cần kích hoạt "hành động tìm kiếm" trên trường văn bản tìm kiếm, giống như tìm kiếm trên google.Cách tìm kiếm bằng phím enter trên InputMethodService tùy chỉnh Android?

Tôi đã thử mã này để kích hoạt các hành động tìm kiếm, nhưng nó không hoạt động:

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

Đây là phương pháp của tôi cho ghi đè vào sự kiện quan trọng:

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

layout xml của tôi là :

<?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"/> 

tôi không có bất kỳ EditText trong cách bố trí của tôi để thiết android:imeOptions="actionSearch".

Trả lời

1

Bạn phải ánh xạ khóa của mình và ghi đè phím enter, sau đó đặt mã tìm kiếm của bạn vào bên trong.

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

Trong trường hợp bạn không có keyCode tùy chỉnh, bạn có thể thấy một số herehere.

+0

Cảm ơn. xin hãy giúp tôi để làm cho mã tìm kiếm – John

+0

Vâng, những gì bạn muốn tìm kiếm? Bối cảnh là gì? Anh đã làm gì cho đến nay? Tôi nghĩ bạn nên mở một câu hỏi mới chỉ tập trung vào mã tìm kiếm và giải thích, hoặc nếu ý định của bạn trong câu hỏi này là nhận trợ giúp cho mã tìm kiếm chứ không phải cho bàn phím, hãy chỉnh sửa câu hỏi và giải thích rõ hơn. –

+1

tôi đã chỉnh sửa câu trả lời của bạn. ví dụ tôi muốn tìm kiếm trong hộp tìm kiếm của cửa hàng ứng dụng Google Play, khi tôi nhập một từ và nhấn phím enter trong bàn phím tùy chỉnh của mình. mã tôi gõ không hoạt động. Bạn có thể giúp tôi được không? cảm ơn bạn – John

1

thử code của mình

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; 
     } 
    }); 
Các vấn đề liên quan