嗨,我需要一个软键盘只用数值0来9和Enter关键.不应该显示除了这些之外的任何东西. , ( )......

setRawInputType(Configuration.KEYBOARD_QWERTY)setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED)setRawInputType(InputType.TYPE_CLASS_NUMBER)setRawInputType(InputType.TYPE_CLASS_PHONE)我总是在键盘上显示额外的字符,如:

setRawInputType(Configuration.KEYBOARD_12KEY) 显示这样的键盘:

非常感谢任何帮助.提前致谢.
注意:
android:minSdkVersion="14":ICS4.0android:targetSdkVersion="17":JB 4.2qwerty android ime android-softkeyboard android-input-method
http://developer.android.com/guide/topics/text/creating-input-method.html#GeneralDesign上 写着:
由于可以在设备上安装多个IME,因此为用户提供了一种直接从输入法UI切换到不同IME的方法.
假设我有两个输入方法的源,可以修改它.我想让用户快速切换它们,并准备为此保留一个按钮.如何"直接从输入法UI切换到不同的IME"?
我正试图设置一个监听器,EditText当按下输入按钮时.但它根本没有发射.我使用Android 4.2.2在LG Nexus 4上进行了测试.setOnEditorActionListener适用于Android 2.3的亚马逊Kindle Fire,setImeActionLabel无处可用!我也无法为Enterbutton 设置文本.这是代码:
mEditText.setImeActionLabel("Reply", EditorInfo.IME_ACTION_UNSPECIFIED);
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
Log.d("TEST RESPONSE", "Action ID = " + actionId + "KeyEvent = " + event);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我怎样才能解决这个问题?
我正在研究Android的自定义键盘,我遇到了一个问题,键盘似乎在右边留下一个白线/空格,而不是填充父视图...(不要介意图标,它现在只是占位符图形)
下面你可以看到我的布局......
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="14%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="60dp"
>
<Row>
<Key android:codes="49" android:keyIcon="@drawable/rsz_emoji" android:horizontalGap="1%p" android:keyEdgeFlags="left"/>
<Key android:codes="50" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="51" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="52" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="53" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="54" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="48" android:keyIcon="@drawable/rsz_emoji" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="113" android:keyIcon="@drawable/rsz_emoji" android:horizontalGap="8%p" android:keyEdgeFlags="left"/>
<Key android:codes="114" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="116" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="121" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="111" android:keyIcon="@drawable/rsz_emoji"/>
<Key android:codes="112" android:keyIcon="@drawable/rsz_emoji" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="1" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p" android:horizontalGap="8%p" android:keyEdgeFlags="left"/>
<Key android:codes="46" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p"/>
<Key android:codes="58" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p" android:keyEdgeFlags="right"/>
</Row>
<Row android:rowEdgeFlags="bottom">
<Key android:codes="44" android:keyIcon="@drawable/globe" …Run Code Online (Sandbox Code Playgroud) 我有一个winform应用程序,我想在C#中获取当前输入语言的信息.我有windows 10机器,我选择了韩语.在选择韩语后,任务栏中有一个切换按钮可将输入语言更改为英语或韩语.
以下代码总是提供韩语,但是当我选择英语输入时它应该提供英语.
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hwnd, IntPtr proccess);
[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint thread);
public Form1()
{
InitializeComponent();
IntPtr foregroundWindow = GetForegroundWindow();
uint foregroundProcess = GetWindowThreadProcessId(foregroundWindow, IntPtr.Zero);
int keyboardLayout = GetKeyboardLayout(foregroundProcess).ToInt32() & 0xFFFF;
CultureInfo info = new CultureInfo(keyboardLayout);
int keyboardLayoutId = info.KeyboardLayoutId;
string name = info.Name;
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来获取输入语言信息.
我想在WndProc方法中提供这些信息.
问题总结:所以我想处理当用户切换语言通过切换按钮键入时的情况,当用户通过切换按钮切换语言时,我希望任何wndproc消息或窗口边事件获取语言信息.
假设我想用自定义Android IME写一个字符'暂'.如果我想在按下"G"键后跟"E"时显示所述字形,我该如何处理它(G本身被分配给另一个代码).
我知道我可以将多个字符分配给同一个标签,如下所示,我将根据使用的点击频率获得不同的结果...
<Key android:codes="xx,yy" android:keyLabel="?"/>
Run Code Online (Sandbox Code Playgroud)
我的目标很相似,但有些不同.我希望通过做类似的事情,我可以获得预期的效果....
<Key android:codes="xx,xx+zz=yy" android:keyLabel="?"/>
Run Code Online (Sandbox Code Playgroud)
但这似乎并不是有效的做法.
我正在尝试创建多个IME子类型,但Android只能识别一个.
<?xml version="1.0" encoding="utf-8"?>
<input-method
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsSwitchingToNextInputMethod="true"
android:settingsActivity="com.example.softkeyboard.Settings">
<subtype android:name="@string/display_name_english_keyboard_dynamic_ime"
android:imeSubtypeLocale="en_US"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="charDataFile=strokemaps_dynamic" />
<subtype android:name="@string/display_name_english_keyboard_ime"
android:imeSubtypeLocale="en_US"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="charDataFile=strokemaps" />
</input-method>
Run Code Online (Sandbox Code Playgroud)
<resources>
<string name="app_name">KK1</string>
<string name="display_name_english_keyboard_ime">English</string>
<string name="display_name_english_keyboard_dynamic_ime">English Dynamic</string>
Run Code Online (Sandbox Code Playgroud)
@Override
public void onStartInputView(EditorInfo ei, boolean restarting) {
super.onStartInputView(ei, restarting);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> imil = imm.getEnabledInputMethodList();
for (InputMethodInfo imi: imil) {
Log.e("osiv", "input method info: "+imi.toString());
}
List<InputMethodSubtype> imsl = imm.getEnabledInputMethodSubtypeList(imil.get(0), true);
for (InputMethodSubtype ims: imsl) {
Log.e("osiv", "input method subtype: "+ims.toString());
}
Run Code Online (Sandbox Code Playgroud)
列出的InputMethodInfos包含我的IME,但子类型列表只包含一个子类型.如果它是文件中唯一的子类型,则每个子类型都起作用.
Android 8.0设备不会在其语言/键盘配置选项中显示子类型,只显示IME本身,因此无法单独启用或禁用子类型. …
我看到id == EditorInfo.IME_NULL除了另一个条件(例如输入键或IME动作)之外,还应该定期使用与"完成"或"输入"相匹配的地方,但是我找不到任何确切的解释.
我想在winform应用程序中的ediatble区域中键入韩语文本.
但是人物正在重复,我试图覆盖默认值WndProc,但没有任何效果.
switch (m.WParam.ToInt32())
{
case Common.Interop.Window.WM_IME_CHAR:
break;
case Common.Interop.Window.WM_IME_ENDCOMPOSITION:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_CHAR:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_IME_NOTIFY:
break;
case Common.Interop.Window.WM_IME_COMPOSITION:
PassCharToScreen(m);
break;
case Common.Interop.Window.WM_IME_COMPOSITIONFULL:
break;
Run Code Online (Sandbox Code Playgroud)
当我输入英文时,断点命中WM_CHAR,但是当我输入韩文时,它会击中WM_IME_COMPOSITION第一个字符,然后在第一个字符后首先命中WM_IME_COMPOSITION然后点击WM_CHAR.
我观察到它键入了第一个字符正确.例如ㅁ(韩文字符)输入第二个字符.ㅁㅂㅁ(First char,second char,first char).我想要记事本中的行为
我有一个基本的<input type="text" oninput="funct()"></input>.
然而,当我输入中文时,oninput它也是由 IME 输入触发的,而不仅仅是结果字符。例如,当我用拼音输入法输入“\xe6\x88\x91\xe5\x80\x91”时,我的函数funct()显示console.log(WHAT_I_TYPED),控制台显示:
我希望它只读取“\xe6\x88\x91\xe5\x80\x91”。但是,我不想修改函数中的文本,因为中文输入法太多,无法实现。
\n