【发布时间】:2015-11-18 23:50:30
【问题描述】:
我有一个自定义键盘,其按钮启用了 isSticky,但我无法检测它是打开还是关闭(真/假),并且在按下任何键后禁用它们(如果它已打开(真))。
这个问题是我找不到检测按键的方法,也无法在当前的编辑文本中附加功能(所有粘性按钮都有特定的功能)。
这应该发生在 OnKey 函数中,
这是我的键盘类:
public class MyKeyboardListener : Java.Lang.Object, KeyboardView.IOnKeyboardActionListener{
private readonly Activity _activity;
public MyKeyboardListener(Activity activity){
_activity = activity;
}
public void OnKey(Android.Views.Keycode primaryCode, Android.Views.Keycode[] keyCodes){
var eventTime = DateTime.Now.Ticks;
var keyEvent = new KeyEvent(eventTime, eventTime, KeyEventActions.Down, primaryCode, 0);
switch ((int)primaryCode) {
case 1005:
break;
case 1006:
break;
default:
_activity.DispatchKeyEvent(keyEvent);
break;
}
}
public void OnPress(Android.Views.Keycode primaryCode){
}
public void OnRelease(Android.Views.Keycode primaryCode){
}
public void OnText(Java.Lang.ICharSequence text){
}
public void SwipeDown(){
}
public void SwipeLeft(){
}
public void SwipeRight(){
}
public void SwipeUp(){
}
}
Keyboard.axml
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="100%"
android:keyHeight="6%p">
<Row>
<Key
android:codes="1000"
android:keyLabel="A"
android:keyEdgeFlags="left"
android:isModifier="true"
android:isSticky="true"
android:horizontalGap="1%p" />
<Key
android:codes="1001"
android:keyLabel="B"
android:isModifier="true"
android:isSticky="true"
android:horizontalGap="1%p" />
<Key
android:codes="1002"
android:keyLabel="C"
android:isModifier="true"
android:isSticky="true"
android:horizontalGap="1%p" />
<Key
android:codes="1003"
android:keyLabel="D"
android:isModifier="true"
android:isSticky="true"
android:horizontalGap="1%p" />
<Key
android:codes="1004"
android:keyLabel="E"
android:keyEdgeFlags="right"
android:isModifier="true"
android:isSticky="true"
android:horizontalGap="1%p" />
</Row>
<Row>
<Key
android:codes="8"
android:keyLabel="1"
android:keyEdgeFlags="left"
android:horizontalGap="1%p" />
<Key
android:codes="9"
android:keyLabel="2"
android:horizontalGap="1%p" />
<Key
android:codes="1005"
android:keyLabel="F"
android:horizontalGap="1%p" />
<Key
android:codes="1006"
android:keyLabel="G46"
android:horizontalGap="1%p" />
<Key
android:codes="67"
android:keyLabel="DELETE"
android:keyEdgeFlags="right"
android:horizontalGap="1%p" />
</Row>
</Keyboard>
【问题讨论】: