Kindle Fire Клавишные кнопки - PullRequest
3 голосов
/ 01 марта 2012

В моем приложении есть поле EditText:

           <EditText                    
                android:id="@+id/task_buy_edit_mass_editText1"
                android:minWidth="100dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"                    
                android:inputType="numberDecimal"
                android:imeOptions="actionDone" >

            </EditText>

Проблема в том, что на моем Kindle Fire клавиатура, которая появляется, когда пользователь хочет отредактировать EditText, не имеет кнопки Готово, простокнопка, которая скрывает программную клавиатуру

enter image description here

Это не было бы проблемой, если бы я мог перехватить кнопку «скрыть клавиатуру», которую я выделил на скриншоте выше.Тем не менее, похоже, что OnEditorActionListener, который я прикрепил к EditText, не срабатывает, поэтому я немного застрял в том, что делать, кроме наличия собственной кнопки «Готово» в моем фактическом макете, чтобы отвлечь вниманиеиз EditText скрыть клавиатуру и внести любые изменения, которые происходят в результате изменения номера

Есть ли способ перехватить кнопку «скрыть клавиатуру», или есть какое-то альтернативное решение?

Между прочим, у меня есть обычное представление EditText в другом месте моего приложения, которое не имеет imeOptions и не указывает inputType и имеет клавишу Return

Вот остаток кода для справки:

        editText.setOnEditorActionListener(new OnEditorActionListener(){

            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId==EditorInfo.IME_ACTION_DONE || actionId==EditorInfo.IME_ACTION_NEXT || actionId==EditorInfo.IME_NULL || event.getKeyCode()==KeyEvent.FLAG_EDITOR_ACTION || event.getKeyCode()==KeyEvent.KEYCODE_ENTER){
                    closeKeyboard(v, done_button);              
                    return true;
                }
                return false;
            }});

            // set done button for keyboards without correct IME options
            final EditText finalEditText = editText;

            editText.setOnTouchListener(new OnTouchListener(){

                @Override
                public boolean onTouch(View v, MotionEvent event) {                     
                    done_button.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View v) {                               
                            closeKeyboard(finalEditText, v);
                        }});
                    done_button.setVisibility(View.VISIBLE);
                    return false;
                }                   
            });

.

        private void closeKeyboard(TextView v, View buttonv){
                demand.setAmount(Double.parseDouble((v.getText().toString()))); // update the game

                // close keyboard
                InputMethodManager inputManager = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);                       
                inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);                       
                v.clearFocus();
                buttonv.setVisibility(View.GONE);
        }

1 Ответ

1 голос
/ 26 октября 2013

android:inputType="textMultiLine" и android:singleLine="true", как указано @James Wald, работает.

EDIT: Выполнение вышеупомянутого сделает его многострочным EditText. Вместо этого android:imeOptions="actionGo" работал для моих целей на всех устройствах (AFAIK).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...