Как добавить кнопку Go в Android SoftKeyBoard и его функциональность? - PullRequest
8 голосов
/ 05 апреля 2010

Я хочу поставить кнопку «Перейти» в программной клавиатуре приложения для Android

для поиска и других связанных сценариев, может ли кто-нибудь подсказать мне, как этого добиться? с примером.

любая помощь будет оценена.

Ответы [ 4 ]

25 голосов
/ 07 апреля 2010

наконец я использовал ...

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

}); 
15 голосов
/ 05 апреля 2010

Если ваш вопрос заключается в том, что у вас есть EditText или редактируемый TextView, и вы хотите, чтобы правая кнопка действия на программной клавише показала «Go», добавьте этот атрибут в свой EditText / TextView

android:imeActionLabel="actionGo"

noteчто он также должен быть однострочным TextView, иначе кнопка действия будет переключателем возврата каретки (стрелка).

android:singleLine="true" 
1 голос
/ 07 октября 2016

Я использовал

android:imeOptions="actionGo" 

и для выполнения действия go я использую

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;
            }
        });
1 голос
/ 26 августа 2014

Я делаю то же самое для "отправки":

Используйте этот класс в макете:

открытый класс ActionEditText расширяет EditText { public ActionEditText (Контекстный контекст) { супер (контекст); }

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

}

В 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...