2010-04-05 10 views
8

Chcę umieścić przycisk "Go" w aplikacji Android softkeyboardjak dodać przycisk Go w Android SoftKeyBoard i jego funkcjonalność?

dla wyszukiwania i innych powiązanych scenariuszy, czy ktoś może mi pomóc? z przykładem.

każda pomoc byłaby przydatna.

+0

Myślałem, że to coś automatycznie ... – confiq

+0

Zobacz to pytanie od kilku dni: http://stackoverflow.com/questions/2568637/how-to-disable-next-button-on-a-edittext-software -keyboard-replace-with-done –

Odpowiedz

24

ostatecznie użyłem ...

EditText SearchEditText =(EditText)findViewById(R.id.txtMapSearch); 
SearchEditText.setOnEditorActionListener(new OnEditorActionListener(){ 

    @Override 
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
     if(arg1 == EditorInfo.IME_ACTION_SEARCH) 
     { 
      // search pressed and perform your functionality. 
     } 
     return false; 
    } 

}); 
+1

Aby dodać punkt, jeśli klawiatura pokazuje przycisk DONE w prawym dolnym rogu, użyj zamiast tego EditorInfo.IME_ACTION_DONE. – Rorchackh

+0

Łącze do dokumentacji: http://developer.android.com/training/keyboard-input/style.html#Action –

14

Jeśli pytanie jest to, że masz TextView EditText lub edycji, a chcesz działanie prawego przycisku na softkeyboard czytać „Idź”, a następnie dodać ten atrybut do EditText/TextView

android:imeActionLabel="actionGo" 

zauważyć, że musi to być również pojedynczy wiersz TextView, ponieważ w przeciwnym razie przycisk akcji będzie selektorem powrotu karetki (strzałka).

android:singleLine="true" 
+0

w rzeczywistości chcę wykonywać funkcje, takie jak naciśnięcie przycisku wyszukiwania na aktywności na tym przycisku na klawiaturze. – UMAR

+0

@Jim Blackler Jak mogę wykonać akcję, gdy użytkownik kliknie przycisk actionGo na klawiaturze? – Enve

1

robie to samo na "wyślij":

użyć tej klasy w układzie:

public class ActionEditText rozciąga EditText { public ActionEditText (Kontekstowy kontekst) { super (kontekst); }

public ActionEditText(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

public ActionEditText(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, defStyle); 
} 

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) 
{ 
    InputConnection conn = super.onCreateInputConnection(outAttrs); 
    outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; 
    return conn; 
} 

}

w XML:

<com.test.custom.ActionEditText 
      android:id="@+id/postED" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@android:color/transparent" 
      android:gravity="top|left" 
      android:hint="@string/msg_type_message_here" 
      android:imeOptions="actionSend" 
      android:inputType="textMultiLine" 
      android:maxLines="5" 
      android:padding="5dip" 
      android:scrollbarAlwaysDrawVerticalTrack="true" 
      android:textColor="@color/white" 
      android:textSize="20sp" /> 
1

użyłem

android:imeOptions="actionGo" 

i przejść do obsługi działań MA I używając

etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       if (actionId == EditorInfo.IME_ACTION_GO || actionId == EditorInfo.IME_ACTION_DONE) { 
        //your functionality 

        // hide virtual keyboard 
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(etSearch.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); 

        return true; 
       } 
       return false; 
      } 
     }); 
Powiązane problemy