gpt4 book ai didi

c# - 在 Android 自定义键盘中检测 isSticky

转载 作者:行者123 更新时间:2023-12-05 00:00:12 26 4
gpt4 key购买 nike

我有一个带有启用 isSticky 按钮的自定义键盘,但我无法检测它是打开还是关闭(true/false),如果它打开(true),则在按下任何键后也会禁用它们。

问题是我找不到检测键的方法,也找不到将当前编辑文本附加到功能的方法(所有粘性按钮都有特定功能)。

这应该发生在 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(){
}
}

键盘.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>

最佳答案

在公共(public)类 LatinKeyboardView 中扩展 KeyboardView,覆盖 onDraw 方法并使用以下代码获取粘滞键和修饰键

List<Key> keys = getKeyboard().getKeys();
for (Key key : keys) {
Drawable npd;
// int drawable = R.drawable.btn_normal_with_shadow_t1;
int drawable = R.drawable.key_normal;
textColor = sessionManager.getSimpleyKeyTextColor();

if (key.pressed) {
drawable = R.drawable.key_normal;
} else {
if (key.modifier && key.sticky) {
drawable = R.drawable.stickey_with_shad_bord;
textColor = sessionManager.getSimpleyKeyTextColorModifiers();
} else if (key.modifier) {
drawable = R.drawable.modifier_btn_with_bord_shad;
textColor = sessionManager.getSimpleyKeyTextColorModifiers();
} else {
drawable = R.drawable.key_normal;
}
}

这是我们将修饰符设置为 true

的 xml 代码
<Key
android:codes="-1"
android:isModifier="true"
android:keyWidth="14.8%p"
android:keyEdgeFlags="left"
android:keyIcon="@drawable/ic_shift_normal" />

关于c# - 在 Android 自定义键盘中检测 isSticky,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com