标签: soft-keyboard

知道Android软键盘何时退出的可靠方式(适用于每部手机的回调)

我们正在开发我们的第一个Android应用程序,到目前为止它是一个非常愉快的体验.它几乎完成,但在发布之前我们有一些考虑因素,主要是关于android软键盘.

我们有几个用于输入数字的 EditText字段.我们希望在用户按下Enter键时捕获事件,并进行一些计算并保存此回调.

问题是我们没有得到固定的事件,因为不同的手机有不同的键盘.有些人有"完成"按钮,我们的HTC手机有"进入"按钮.我们尝试将imeOptions用作'完成',但这对HTC手机没有影响.

我们也知道可以通过按下后退按钮解除键盘.所以我的问题是,是否有一种可靠的方法可以知道用户何时停止输入或何时隐藏键盘,就像在iphone sdk中的textFieldShouldReturn回调一样(当键盘发生故障时它总是会触发,而不管是什么键导致它去了下)..

换句话说,Android开发人员如何处理软键盘?我在editText onClick()事件上检查KeyEvent.KEYCODE_ENTER并在那里完成我的任务.它正在我的HTC android上工作,但不是我的朋友Nexus手机,它有一个完成按钮而不是输入.甚至没有调用onClick.开发人员如何处理此问题?

编辑:失去了一半的头发,并在这里的一些好朋友的帮助下

我已经尝试了所有的建议,但最后通过使用onEditorActionListener和onKeyListener方法为我做了诀窍.在OnEditorActionListener的onEdit回调中,我检查了KeyCode ACTION_DONE,它确实在带有完成按钮的键盘上调用.在输入onKey的键盘上被调用.在onKey方法中我也检查了KEYCODE_BACK,因此也可以处理硬件反压事件.我还没有找到一个完成的Android设备并且在键盘上输入(严重),我甚至用标志处理了这个案例.感谢@Femi建议onEditorActionListener,感谢所有朋友的帮助.但是我原来问题的答案

问:有没有一种可靠而简单的方法来了解android软键盘辞职(适用于每部手机的回调)

答:不,这里建议的所有方法和其他网站上建议的所有方法都不简单.我认为处理键盘返回键事件是任何操作系统最基本的事情.谷歌,你呢?

events android enter soft-keyboard

24
推荐指数
1
解决办法
9863
查看次数

隐藏软键盘不起作用

我正在使用Droid Incredible进行开发(并且已经在1.5 AVD仿真器上进行了测试),我的选项卡小部件中的一个选项卡包含一个列表视图和一个带有EditText和一个发送按钮的行(用于聊天功能) .单击"发送"后,我将使用以下内容关闭软键盘,但它无法正常工作.这与我在其他地方发现的代码完全相同.

看到我错过的任何东西?

// in Button's onClick():
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry);
// Handle button click ...
chatTextBox.setText("");

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)

我也尝试将旗帜改为0.没有运气.谁知道怎么了?

****编辑****刚刚意识到我最初使用的是hideSoftInputFromInputMethod()代替hideSoftInputFromWindow().改变它并没有使它工作,但......

android hide soft-keyboard

12
推荐指数
3
解决办法
2万
查看次数

Phonegap:完全从iPhone键盘上移除黑条

我们正在使用Phonegap来开发我们的移动应用程序,我们从这里借用代码从键盘中删除黑色的next/prev/done栏:

/sf/answers/649321641/

该代码的作用是找到黑条,作为UIView对象,并在其上调用'removeFromSuperview'.

我们不熟悉iOS SDK/API.因此,虽然我们可以查看代码并了解它正在做什么,但我们无法确定它是否正确执行,或者如何改进它.

我们遇到的具体问题:

我们有一个用于编写消息的文本字段,我们手动控制此字段的位置正好位于键盘上方,类似于本机短信应用程序.换句话说,我们把它放在应该是黑条的地方.

当我们关注/键入消息字段时,系统会向上推动视图.看起来这是一种机制,可确保文本字段在用户输入时不可见.

这是发生即使文本字段可见的.

我注意到,通过将输入字段放在黑色条通常位于正上方的位置(与其背后相对),视图不会滚动.

所以系统似乎认为黑条仍在那里!

(要仔细检查:当黑色条未被移除时,我们将文本字段放在它上方,我们可以对焦并输入它,并且视图不会滚动).

所以问题是:

为什么"系统"会在编辑一个文本字段时推送内容,该文本字段位于黑色条应该位于"后面"的位置?是因为黑条还没有被完全移除吗?我们需要做些什么来"完全"去除黑条吗?我们是否需要强制iOS重新计算键盘的大小?或究竟是什么?

这个机制(推高视图)是由iOS的UIWebView或Phonegap实现的吗?

有没有解决这个问题的phonegap应用程序?

iphone objective-c soft-keyboard cordova

12
推荐指数
1
解决办法
2770
查看次数

隐藏softkeypad的方法不会影响android中edittext的功能

我隐藏了软键盘,因为我在应用程序上有自定义键盘.单击edittext时,不应弹出软键盘.所以,我从源头上尝试了很多方法,但没有任何方法可行editText.setFocusable(false);.但是现在问题是当我点击它时甚至没有突出显示的是edittext没有突出显示.我已经尝试过使用InputManager,android:windowSoftInputMode="stateAlwaysHidden在清单中引用了很多像链接1,链接2等,但这些技术至少甚至都没有隐藏我的应用程序上的软键盘.最后我通过setFocusable得到了这个,但是有一个突出显示问题和光标不可见的问题,甚至requestFocus()在onClickListener中也没有用.有人能为这个问题提供准确的解决方案吗 代码片段表示赞赏.

android hide soft-keyboard android-edittext

11
推荐指数
1
解决办法
351
查看次数

Android慢软键盘开启

我有一个非常讨厌的问题.在Android中制作注册表单,当EditText获得焦点时,键盘出现.但它真的很慢.即使在高端设备上也需要5秒或更长时间.

我们的应用程序使用多个层次的碎片.所以我想可能计算所有这些层向上滑动(当键盘出现时)需要这么长时间.当我在清单文件中设置"adjustNothing"时,键盘会快速显示,而在另一个我们只有一层片段的活动中(这一层是注册表单),它也会很快出现.

有人有类似的问题或建议吗?(隐藏或删除注册下方的片段不是一种选择)

keyboard android soft-keyboard android-softkeyboard android-fragments

11
推荐指数
1
解决办法
3474
查看次数

如何使用<input type ="number"/>字段克服WhatWG/W3C/Chrome版本33.0.1750.146"回归错误"

我在引号中加上"回归错误"这个词,因为这显然有一些不一致的意见.有关详细信息,请访问Bugzilla中的Bug 24796.

简而言之,Google Chrome根据最新版本的WhatWG规范实施了更改:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type- attr-summary从字段 中删除了以下属性和方法<input type="number"/>.

属性:

  • selectionStart
  • 选定结束

方法:

  • 选择()
  • setSelectionRange(开始,结束)

(还有其他但这些是常用的关键)

如果您检查HTMLInputElement尝试调用方法的"数字"实例或请求属性将引发异常,则定义方法.:-(

恕我直言这是一个错误(因为功能已被删除,没有任何收获......并且有1,000个网站/应用程序通过JavaScript为这些数字输入字段提供扩展行为......但我离题了(对于那些希望要解决它请使用上面列出的bug帖子))

TL; DR

出于可用性目的,我当然希望并计划继续使用<input type="number"/>字段,因为它们向用户代理提供"提示",如果在移动设备(智能手机/平板电脑/?)上,我希望在字段为时显示数字键盘专注于默认的alpha键盘.

但是对于当前版本的Chrome(版本33.0.1750.146)和盲目实现此规范更改的任何其他浏览器,我想安全地将渲染字段转换回 <input type="text"/>

笔记:

  • 在修改其内容时尝试动态更改这些字段已证明是不成功的,因为字段在更改type属性时会丢失其选择范围.
  • 我确实有一个我想出的解决方案,我很快就会发布,但我想确保这个问题/答案适用于遇到此问题的所有开发人员

javascript w3c google-chrome html-input soft-keyboard

11
推荐指数
1
解决办法
3618
查看次数

如何为特定活动禁用Android Soft Keyboard?

我有一个EditText活动,我只需要输入数字.

现在,我已经将EditText的输入类型定义为仅限数字,并为我的用户绘制了一个漂亮的键盘,但是我还需要确保在用户点击时不会弹出软键盘EditText.

我试图通过添加隐藏键盘通过清单

android:windowSoftInputMode="stateAlwaysHidden"
Run Code Online (Sandbox Code Playgroud)

在我的Manifest中针对特定活动,但这对我不起作用,因为只要用户点击EditText,键盘就会再次出现.

我尝试过以编程方式执行相同操作

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.用户单击EditText时会出现键盘.

唯一有效的方法是将EditType的InputType设置为null,如下所示:

EditText.setInputType(InputType.TYPE_NULL);
Run Code Online (Sandbox Code Playgroud)

但我不能使用它,因为它允许键盘连接到他们设备的用户在EditText字段中输入字母和其他符号,而我希望每个人都专门使用键盘在字段中输入数据.

我还应该提一下,我目前正在Android 2.1下测试我的应用程序,但我希望我的解决方案适用于所有版本.任何帮助,将不胜感激.提前致谢.

keyboard android soft-keyboard android-edittext

10
推荐指数
2
解决办法
3万
查看次数

Scrollviewer和SIP问题(WP7.5芒果)

我正在申请一份包含注册表格的申请表.表单包含多个文本输入框,因此ScrollViewer用于允许它们全部显示在一个页面上.

以下是我正在使用的XAML代码的精简示例:

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock x:Name="ApplicationTitle" Text="SCROLLVIEWER TEST" Style="{StaticResource PhoneTextNormalStyle}"/>
        <TextBlock x:Name="PageTitle" Text="registration" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <ScrollViewer Grid.Row="1">
        <StackPanel>
            <TextBlock Text="Hello" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello1" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello2" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello3" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello4" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello5" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello6" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello7" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="Hello8" Margin="12,0,0,0"/>
            <TextBox />
            <TextBlock Text="END" Margin="12,0,0,0"/>
            <TextBox …
Run Code Online (Sandbox Code Playgroud)

scrollviewer soft-keyboard windows-phone-7

10
推荐指数
1
解决办法
1504
查看次数

在键盘功能运行时保持iOS键盘打开

这个问题是关于iOS web dev.

我有一个由"搜索"输入字段中的键盘监听器触发的函数.它适用于台式机,笔记本电脑,三星Galaxy手机和索尼Xperia,但不适用于iPhone或iPad.只要该功能运行,软键盘就会关闭.我想到的一个可能的解决方案是focus将输入重新id='newsearch'作为函数的最后一行,但这似乎没有做任何事情.

有没有人知道如何在ios中运行该功能时保持键盘打开?

请参阅以下3个代码段:

触发该功能的行:

<tr><td colspan='3'>Search <input type='text' autofocus id='newsearch'></input></td>

    <h2>Search Results</h2>
    <div id="newsearch-data"> </div>

<script src="http://code.jquery.com/jquery-1.8.0.min.js"> </script>
<script src="addplayer.js"> </script>
Run Code Online (Sandbox Code Playgroud)

函数本身: addplayer.js

$('input#newsearch').on('keyup', function(){
    var newsearch = $('input#newsearch').val();
    if ($.trim(newsearch)!= "") {
        $.post('newsearch.php', {newsearch: newsearch}, function(data) {
            $('div#newsearch-data').html(data);
        });
    }
});
            document.getElementById("newsearch").focus();
Run Code Online (Sandbox Code Playgroud)

函数引用的php文件: newsearch.php

if (isset($_POST['newsearch']) && $_POST['newsearch'] != NULL){
    require 'dbconnect.php';

    $term = $_POST['newsearch'];
    $terms = "%" . $term . "%";

    $_SESSION['players'] = array();

    $query = ("SELECT * FROM players WHERE …
Run Code Online (Sandbox Code Playgroud)

javascript iphone soft-keyboard ios iphone-softkeyboard

9
推荐指数
1
解决办法
721
查看次数

Android:如何在显示softkeybord时更改导航栏的颜色?

使用我的应用主题,我使用此属性显示彩色导航栏(屏幕底部带有后退按钮的导航栏)

 <item name="android:navigationBarColor">@color/theme_color</item>
Run Code Online (Sandbox Code Playgroud)

当软键盘出现时,颜色变为黑色.我想保留我的主题颜色.

android soft-keyboard navigationbar android-theme android-styles

7
推荐指数
0
解决办法
183
查看次数