2012-03-01 3 views
3

У меня есть поле EditText в моем приложении:Kindle Кнопки пожарной клавиатуры

  <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 не имеет кнопки Done, просто кнопка, которая скрывает экранную клавиатуру

enter image description here

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

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

Кстати, у меня есть регулярное представление EditText в другом месте в моем приложении, которое не имеет imeOptions и не задает inputType и что действительно есть Возвращения ключа

Вот остальная часть коды для справки:

 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); 
     } 
+0

StackOverflow предназначен для программирования вопросов, и вы не задали вопрос. IME не должны соблюдать 'android: imeOptions =" ​​actionDone "', и поэтому, хотя вы можете видеть это в Огне, проблема более общая. – CommonsWare

+0

Я знаю. Я ищу решение для Kindle Fire. Я отредактировал свой ответ, чтобы уточнить, что именно я задавал. –

+2

Вы можете попробовать добавить андроид: inputType = "textMultiLine" и android: singleLine = "true" в EditText, однако я обнаружил, что это вызывает проблемы с новым желе Бобы. –

ответ

1

android:inputType="textMultiLine" и android:singleLine="true" в @James Wald показал работу.

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

+0

android: imeOptions = "actionGo" более уместно, используйте это :) –

Смежные вопросы