软键盘长按退格键是如何工作的?
How the soft keyboard long press backspace works?
我正在 Android 上创建一个输入法,我想实现长按退格键来一个一个地删除一个字符而不松开(我认为默认行为是一旦得到一个就按退格键字符已删除)。
我目前的解决方案是"override"我的"KeyboardView"子class中的"onLongPress"函数,调用一个keep运行delete来发送delete触发长按代码 "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);
}
}
所以,我的问题是"how to stop it?"如何跟踪长按退格键的释放?或者有什么办法可以实现长按删除吗?
我正在 studying.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 class
@Override
public void onKey(int primaryCode, int[] keyCodes) {
InputConnection ic = getCurrentInputConnection();
switch(primaryCode) {
case Keyboard.KEYCODE_DELETE:
ic.deleteSurroundingText(1, 0);
break;
}
}
我正在 Android 上创建一个输入法,我想实现长按退格键来一个一个地删除一个字符而不松开(我认为默认行为是一旦得到一个就按退格键字符已删除)。
我目前的解决方案是"override"我的"KeyboardView"子class中的"onLongPress"函数,调用一个keep运行delete来发送delete触发长按代码 "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);
}
}
所以,我的问题是"how to stop it?"如何跟踪长按退格键的释放?或者有什么办法可以实现长按删除吗?
我正在 studying.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 class
@Override
public void onKey(int primaryCode, int[] keyCodes) {
InputConnection ic = getCurrentInputConnection();
switch(primaryCode) {
case Keyboard.KEYCODE_DELETE:
ic.deleteSurroundingText(1, 0);
break;
}
}