在网页中,我有一个搜索字段.我添加了一个"清除"按钮,以便用户可以清除搜索字段并重新开始.为方便起见,我将焦点放在搜索字段的文本框中,光标确实出现在框中.然而,软键盘似乎没有出现在使用默认浏览器的Android设备上.在iOS和Opera Mobile中,它可以像我期望的那样工作.
是否有一种我可以调用的方法可以让键盘显示在Android的浏览器上,以便用户可以立即开始输入?
function clear_search() {
if($('#searchinput').val()) {
$('#searchinput').val('');
}
$('#searchinput').focus();
}
Run Code Online (Sandbox Code Playgroud) 我在选项卡控制器中有一些意图,其中一个我有一个编辑文本,我需要知道它何时有焦点,何时失去了这个焦点.我制订最喜欢的焦点侦听器,OnEditorActionListener等等,现在我唯一的问题仍然是事件的是,当我有集中出现的软键盘,我想要么关闭:通过完成按钮,而不是由1)在手机上后退按钮(禁用后退按钮来关闭键盘,而键盘是可见的)2)检测后退按钮事件,而键盘是可见的,这样我可以通过焦点到其他一些控制.
我曾尝试多种方法,但没有成功,像onBackPressed,onConfigurationChanged(在清单中添加hiddenKeyboard),key_down的活动和等,但没有成功.
有人成功吗?实际上,我想当键盘可见时,我按回电话,我的编辑文本失去焦点(otherControl.requestFocus - >这是一个相对布局).
我有一个聊天应用程序,可以在文本中添加表情符号.
我有这个EditText领域的问题.表情符号图像显示但如果我按下普通键盘上的退格按钮,我正在更改为表情符号图片的文本显示,我必须删除几个字符,直到图片消失.我正在使用Spannable这个.
如果用户按下一次退格键,我希望整个笑脸消失.
这里是我使用的代码:
// This is in the keyclicked listener
{
...
smilie = "(angel)";
break;
...
int cursorPosition = content.getSelectionStart();
content.getText().insert(cursorPosition, getSmiledText(this, smilie));
content.getText().insert(cursorPosition + smilie.length(), " ");
}
public static boolean addSmiles(Context context, Spannable spannable) {
boolean hasChanges = false;
for (Entry<Pattern, Integer> entry : smilies.entrySet()) {
Matcher matcher = entry.getKey().matcher(spannable);
while (matcher.find()) {
boolean set = true;
for (ImageSpan span : spannable.getSpans(matcher.start(),
matcher.end(), ImageSpan.class))
if (spannable.getSpanStart(span) >= matcher.start()
&& spannable.getSpanEnd(span) <= matcher.end()) …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用了搜索视图.我想知道当我点击搜索视图上的搜索按钮时如何隐藏键盘?我必须使用后退按钮来查看结果.
我正在为Android构建一个自定义软键盘,并希望添加一个布局,以包括类似于默认Android键盘(AOSP)正在做的表情符号键.我一直在搜索,但似乎大多数人都试图从图像中显示自定义表情符号.我想展示Android附带的内置图标(如下所示):

似乎我应该能够使用Unicode字符从键盘发送图像,但我的第一次尝试似乎只生成了emojis的旧版本.我如何支持手机可以处理的最新表情符号?另外,如何在键盘上显示表情符号,如上图所示?
android emoticons android-softkeyboard emoji android-input-method
我正在Android中为Amharic语言设计自定义键盘,但以下内容适用于许多其他非英语语言.
两个或多个键组合转换为一个字符.因此,如果用户键入'S',键盘将输出'ሰ'...如果他们跟着字母'A',则'ሰ'将替换为'ሳ'.
我设法得到一个解决方案,如下所示,通过查看光标前的字符并根据Map检查它.但是,我想知道是否有更简单,更清洁的解决方案.
public void onKey(int primaryCode, int[] keyCodes) {
InputConnection ic = getCurrentInputConnection();
HashMap<String, Integer> en_to_am = new HashMap<String, Integer>();
CharSequence pChar = ic.getTextBeforeCursor(1, 0);
int outKey = 0;
//build a hashmap of 'existing character' + 'new key code' = 'output key code'
en_to_am.put("83", 4656);
en_to_am.put("?65", 4659);
try {
//see if config exists in hashmap for 'existing character' + 'new key code'
if (en_to_am.get(pChar.toString() + primaryCode) != null) {
outKey = en_to_am.get(pChar.toString() + primaryCode);
ic.deleteSurroundingText(1, 0);
} else { …Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序的搜索界面添加语音搜索功能.目前,它看起来像这样:
为了添加语音搜索,我voiceSearchMode在我的可搜索配置中添加了一个,它在SearchView中添加了一个按钮来触发语音对话框.界面现在看起来像这样:
但是,正如您在键盘上看到的那样,,麦克风按钮现已禁用.我找不到任何关于如何再打开它的文档,唯一相关的问题解释了如何明确禁用它.
是否可以同时使用系统的语音搜索对话框和键盘的语音输入SearchView?
我有一个应用程序,可以很好地处理基于导航栏交互切换的多个片段.其中一个屏幕有多个文本字段,我决定订购这些字段,因此键盘"next"会自动将用户带到下一个可填写的文本字段nextFocusDown.最后一个导致导致RadioGroup显示"完成"按钮.
该领域是这样的(他们是内LinearLayout是内NestedScrollView内的另一个LinearLayout即根目录下FrameLayout):
<EditText
android:id="@+id/firstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName|textCapWords"
android:nextFocusDown="@id/lastName"
android:text="" />
<EditText
android:id="@+id/lastName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName|textCapWords"
android:nextFocusDown="@id/email"
android:text="" />
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textEmailAddress"
android:nextFocusDown="@id/localId"
android:text="" />
Run Code Online (Sandbox Code Playgroud)
还有更多字段,其中一些包括文本提示等.
如果我运行应用程序,选择一个字段,然后点击"下一步"按钮,直到键盘自行消失 - 一切正常.当我选择一个字段时出现问题,键盘出现,然后我点击了导致键盘消失的安卓向下按钮.执行此操作后,此屏幕中的所有内容看起来都很好,一切正常,直到我切换片段,然后应用程序崩溃,我在日志中看到这些错误:
04-10 00:12:24.763 redacted E/AndroidRuntime: FATAL EXCEPTION: main
Process: redacted, PID: 24660
java.lang.NullPointerException: Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object reference
at android.view.inputmethod.InputConnectionWrapper.closeConnection(InputConnectionWrapper.java:270)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:541)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at …Run Code Online (Sandbox Code Playgroud) 我想在进入电子邮件登录界面时弹出设备键盘.
我宣布windowSoftInputMode要"stateVisible"在AndroidManifest.xml中的文件:
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible" />
Run Code Online (Sandbox Code Playgroud)
我已经按照这个文档.
结果:
在运行最多27个Android API的设备上,会显示键盘.
在运行Android API 28的设备上,未显示键盘.
这是Android Pie中的错误吗?
有什么建议吗?
我正在打开Dialog一个Activity.对话框打开后,我打电话
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)
问题是,当我通过点击取消按钮或单击对话框外部关闭对话框时,键盘切换到文本键盘并且不会消失工具我单击硬件返回按钮.如何在关闭对话框时关闭键盘,并将焦点返回到上一个窗口?