2016-09-04 4 views
0

Я создаю метод ввода на Android, и я хочу реализовать длинный ключ возврата назад для удаления символа один за другим без релиза (я думаю, что поведение по умолчанию - это нажатие на обратное пространство после того, как его удалил один символ).Как работает мягкая клавиатура с обратным пространством?

Мое текущее решение «переопределяет» функцию «onLongPress» в моем подклассе «KeyboardView» и вызывает постоянное удаление, чтобы отправить действие удаления в представление, когда было нажато длинное нажатие с кодом «KEYCODE_DELETE» , Как мои коды ниже:

@Override 
protected boolean onLongPress(Key key) { 
    if (key.codes[0] == Keyboard.KEYCODE_DELETE) { 
     final Handler h = new Handler(); 
     final int delay = 500; 
     h.postDelayed(new Runnable() { 
      public void run() { 
       h.postDelayed(this, delay); 
       getOnKeyboardActionListener().onKey(Keyboard.KEYCODE_DELETE, null); 
      } 
     }, delay); 
     return true; 
    } else { 
     return super.onLongPress(key); 
    } 
} 

Итак, мой вопрос: «Как его остановить?» как отслеживать выпуск долгого нажатия клавиши возврата? Или есть способ сделать длинный пресс, чтобы удалить это?

ответ

2

Я в процессе изучения.n
Кажется, работа, но я не уверен, что это правильно.

Использование android:isRepeatable="true".
Вам не нужно использовать onLongPress.
onKey работает как тот же.

XML

<?xml version="1.0" encoding="utf-8"?> 
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" 
      android:horizontalGap="0px" android:verticalGap="0px" 
      android:keyWidth="100%p" android:keyHeight="70dp"> 
    <Row> 
     <Key android:codes="-5" android:keyIcon="@drawable/ic_action_name" android:isRepeatable="true"> 
    </Row> 
</Keyboard> 

Java класс

@Override 
public void onKey(int primaryCode, int[] keyCodes) { 
    InputConnection ic = getCurrentInputConnection(); 

    switch(primaryCode) { 
     case Keyboard.KEYCODE_DELETE: 
      ic.deleteSurroundingText(1, 0); 
      break; 
    } 
} 
+0

Вы правы, спасибо! Я не понял, что основные знания ... – Jason

+0

После многих поисков я нашел свое решение, спасибо большое. это то, что мне нужно. – Dharmishtha