android edittext过滤空格,关于android:在EditText中拦截空格键的问题

我正在尝试为用户提供一种从EditText向TextView输入文本的方法。 但是,如果用户输入了某些内容并想要对其进行修复,我希望他们能够在空的EditText上按空格以获取他们回写的最后一件事。 第一个问题是,如果他们键入" hello",请按Enter键将其添加到TextView(这会从EditText清除它),然后按空格,EditText就会显示" hello"。 不是我想要的,我也不知道为什么。

我的代码将输入的文本放入保留字符串中:

b1 = ti.getText().toString();

然后,如果用户按下空格键,我相信他们应该在EditText中得到b1。 相反,我得到:"" + b1。 为什么在那里增加了空间?

if((event.getAction()==KeyEvent.ACTION_DOWN)&&(key == KeyEvent.KEYCODE_SPACE)){

if(ti.getText().toString().equals("")){

ti.setText(b1);

}

我的第二个更大的问题是,以上代码仅在硬件键盘上有效。 软件键盘按下空间的关键事件是什么?

所有这些都在onKeyListener中。

您能详细说明一下它的行为方式吗? 根据您的第一个描述,我无法说出为什么它不是您想要的。

我不确定您没有理解什么,对不起。 我认为这很清楚。 如果用户键入字符串(例如,hello)并按回车,则将清除EditText并将该字符串发送到TextView。 我希望用户能够按空格键以将该字符串带回。 在此示例中,按空格键应返回" hello"。 不幸的是,我得到了额外的"问候"。

哦,我明白了。 谢谢。

解决多余空间问题的一种简单方法是在将字符串放入EditText之前,先从字符串中删除该空格

b1 = b1.substring(1); //

ti.setText(b1);

ps。我强烈建议使用更具描述性的变量名称。如果使用ti和b1之类的名称,您的程序可能会令人困惑。在程序的上下文中,这些选择也许更有意义。但是,根据您在此处显示的内容,很难分辨出这些名称指的是什么。

在上下文中,它们更有意义。至于您的解决方案,我真的希望避免这样的事情,因为那是那种您很容易忘记的事情,并且如果事情发生了变化,就会发现一些有趣的错误。

您可以使用TextWatcher来检查每个字符,如果EditText为空,如果它是空格,则可以将其设置为忽略。但是,对于您想要实现的目标,这对我来说似乎太过分了。

可能矫kill过正,但这确实有效。谢谢。我什么也做不到。

对于第一个问题,我怀疑您在满足" if"条件时需要从onKeyListener的onKey方法返回true,以表明事件已被使用,否则,您将获得默认的onKeyListener并将空格添加到EditText。即:

if((event.getAction()==KeyEvent.ACTION_DOWN)&&(key == KeyEvent.KEYCODE_SPACE)){

if(ti.getText().toString().equals("")){

ti.setText(b1);

return true;

}

}

KeyEvent API文档的摘录应有助于解决问题2:

"由于软输入法可以使用多种创造性的文本输入方式,因此不能保证软键盘上的任何按键都会产生按键事件:这由IME自行决定,实际上不建议发送此类事件。您绝不应该依赖于软输入法上的任何键来接收KeyEvent,特别是,默认软件键盘绝不会将键事件发送给任何以Jelly Bean或更高版本为目标的应用程序,并且仅会在按下Delete和Delete键时发送事件。将按键返回给以Ice Cream Sandwich或更早版本为目标的应用程序。请注意,其他软件输入方法可能永远不会发送按键事件,无论版本如何;如果您需要与软件键盘进行特定的交互,请考虑使用IME_ACTION_DONE之类的编辑器操作,因为它可以使您更直观地了解用户了解您的应用对按键的反应。"

好吧,这解释了为什么它不起作用。 (我返回的是true,不确定该如何复制进来)。我在文档中错过了。我会仔细研究IME_ACTION_DONE。那实际上覆盖了回车键?

因此,我可以在这里实现一半的功能。我具有用于Enter键的onActionEvent,该操作与IME_ACTION_DONE一样。但是,我仍然需要实现将最后一项拉入的功能。我试图使用event.isShiftPressed(),以便如果按下shift键,它将调用最后一项;如果未按下shift键,则只需输入文字像正常的一样。但是,isShiftPressed()似乎总是返回false。

我将Enter键的解决方案与空格键的Tims分开使用。由于我无法选择两个答案,因此我不得不选择Tims,因为它可以帮助解决两个问题中的较大者。无论如何都投票给您,感谢您的帮助!

AndroidEditText控制禁止输入空格和回车 1.EdiTtext输入框控制不能输入空格,给EditText添加一个addTextChangedListener监听,如果有空格split截取截取再for循环将截取后不包含空格的字符串数组重新排列这样这个字符串就不包含空格了,最后将这个字符串重新写入EditText,这时会出现一个问题就是光标会自动跳转到第一个位置,在onTextChanged中会有一个叫做start的变量他会传入在这个空格输入之前的光标位置,EditText.setSelection(int)来改变光标的位置具体位置。 具体代码: private EditText edittextcll;// 输入框 edittextc 立即下载

相关推荐

Android EditText过滤换行符,回车符和空白符

写在前面:本文是实际开发中遇到的EditText坑点,记为笔记 过滤换行符,回车符,空白符 过滤Emoji 1. 背景 项目有个需求,所有与“标题”有关的输入,都不允许有换行。 第一次拿到这个需求的时候觉得很简单,直接设置一个InputFilter public class NewlineFilter implements InputFilter { /** * @param source 输入的文字 * @param start 输入-0,删除-0 .

liangtianmeng的专栏 4554

关于在 Android EditText 控件 中过滤空格或其他字符

因为需要,往往要对EditText的字符进行限制,但是Android处理xml文件中可以设置 digits 和 inputtype 属性外,似乎并没有直接对字符进行限制的办法。很不幸的是这些都有一定的局限性,因为我只需要排除空格,设置digits的话,中文要如何保证输入我真不会。刚开始学习安卓编程,java基础又稍有薄弱,于是我就开始百度了。 找到了这么一篇文章 关于 andr

七升的专栏 4980

Android——使用InputFilter实现EditText禁止输入空格及filter失效问题

/** * EditText禁止输入空格,使用:mEditText.setFilters(new InputFilter[] { TextUtils.filter }); */ public static InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequ...

NNadn的博客 1697

AndroidEditText的filter过滤(kotlin版)

最近写文字老是用kotlin是因为用了kotlin再也不想用java了 这里写了一个用于过滤空格和换行的,其中注释说明了每一个参数的意义 class SpaceAndLineInputFilter : InputFilter { override fun filter( source: CharSequence?,//即将要输入的字符串 start: Int,//source的start end: Int,//source的end .

小Tian的博客 2549

InputFilter实现EditText过滤中文字符、空格等特殊字符

最近项目要求EditText输入文字时过滤掉中文字符、空格等特殊字符,上网查了好多资料,最后决定使用IputFilter来实现这一功能,写一篇博客来记录一下自己的心得 先上效果图 主要代码public class NoMenuEditText extends EditText { private final Context context; private int maxLeng

qq_25652907的博客 9463

android 去除空格

android 去除空格

Android 2419

android edittext正则过滤,Android EditText使用正则表达式进行输入过滤

Android EditText使用正则表达式进行输入过滤近期在一个项目中用到修改密码这个功能,不过对于密码的输入,我们不希望用户输入汉字或者特殊字符,所以我们需要对用户进行输入的输入框进行过滤,下面是一个对EditText进行过滤的小代码片段:1.首先给Edittext 添加一个TextWatcher,当然这个TextWatcher我们是要自己写的,核心功能也在这个类中[java]mOldPwd...

weixin_33465310的博客 574

android edittext 实现enter键自动换行,并空自动空二格,实现文字自动排版

功能一,近日遇到需要给输入的文字换行,并自动换二格的问题,几经周折,终于找到了解决方案 先判断软键盘输入的是enter键。在这里 return true的是为了防止输入法自身遇到enter键换行,这样就会导致换二行出现。而除了enter 返回false,就是为了让其它的软键盘功能正常使用,不然删除等键全会失效! 另外加一个 action_up是为了防止 这里调用2次这个方法。action_do...

wqbs369的专栏 2055

Android开发中,使用 EditText 输入内容,实现【一键清空内容】

本文仅为个人的处理方式,希望能对你有所帮助,欢迎各位留言指正,抱拳了 1、text.xml示例: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

^Being^ 1万+

android 输入过滤,Android的正则表达式/输入过滤器,以防止多个领先的零

我正在寻找一些帮助,以获得Android的正则表达式,可以防止更多的一个给定的十进制数前导零。目前,可以在实际数字之前添加任意数量的零。我正在寻找像0.1,11.04,0129这样的数字的支持。提前Android的正则表达式/输入过滤器,以防止多个领先的零public class DecimalDigitsInputFilter implements InputFilter{Pattern mPa...

weixin_29495899的博客 353

android输入过滤器,InputFilter实现EditText文本输入过滤器实例代码解析

EditTextAndroid的文本输入框控件,这地球人应该都知道的了,但是默认的EditText是无所不能输入的,有时候我们需要设计一 款软件,而且是给小孩子使用的,而且需要屏蔽以下未成年人所不能涉及的内容,也就是屏蔽某些所不能输入的文字的时候,该如何做呢?其实Android的SDK早已经为我们想过这个问题了,它为我们提供了一个叫做InputFilter的东西,通过它我们可以轻松的设计一个过滤...

weixin_28751115的博客 775

Android EditText禁止输入空格和特殊字符

有时候我们需要限制EditText输入的字符类型,如空格,特殊字符等,这时候我们可以使用系统提供的输入过滤器——InputFilter。具体实现如下: /** * 禁止EditText输入空格 * @param editText */ public static void setEditTextInhibitInputSpace(EditText edit...

shenggaofei的博客 3955

android光标无法换行,AndroidEditText控制禁止输入空格和回车

1.EdiTtext输入框控制不能输入空格,给EditText添加一个addTextChangedListener监听,如果有空格split截取截取再for循环将截取后不包含空格的字符串数组重新排列这样这个字符串就不包含空格了,最后将这个字符串重新写入EditText,这时会出现一个问题就是光标会自动跳转到第一个位置,在onTextChanged中会有一个叫做start的变量他会传入在这个空格输入...

weixin_30486919的博客 547

Android的数据过滤机制

转自:http://blog.163.com/hqq133@126/blog/static/16874781120128913126518/ 一、何谓Android过滤机制?     Android对数据的处理是分层的,从上到下,可以分为:数据层、提供层、Cursor层(不好意思,没找到一个词来表示)、适配层、显示层。每个层次通过一定的机制,可以使数据发生变化时能够上下通知。如下图:

ljbphoebe的专栏 1367

EditText 过滤空格

前些日子,项目里面,登陆密码要过滤空格,我找了找api,好像没有 于是就想到了使用InputFilter类来过滤空格,以前使用它过滤过汉字,unicode码 public static void inputFilterSpace(final EditText edit){         edit.setFilters(new InputFilter[]

Java学习的专栏 8224

android edittext监听拦截,EditText输入内容拦截和监听删除

/*** 扩展输入框。* 可拦截:* 软件盘删除按钮点击事件;* 输入框内容提交;* 长按文字菜单选项点击事件(复制、粘贴、全选等)*/public class ExtendEditText extends AppCompatEditText {public ExtendEditText(Context context) {super(context);}public ExtendEd...

weixin_32889145的博客 1610

android去掉字符串空格,Android EditText禁止输入空格和特殊字符

有时候我们需要限制EditText输入的字符类型,如空格,特殊字符等,这时候我们可以使用系统提供的输入过滤器——InputFilter。具体实现如下:/*** 禁止EditText输入空格* @param editText*/public static void setEditTextInhibitInputSpace(EditText editText){InputFilter filter=n...

weixin_39621456的博客 581

Android 人脸识别拍照demo

下面是我学习用到的一些书籍学习导图,以及系统的学习资料。每一个知识点,都有对应的导图,学习的资料,视频,面试题目。❝ 多层次的工作/学习计划 + 番茄工作法 + 定额工作法 + 批处理 + 多任务并行 + 图层工作法❞。希望大家能将这些要点融入自己的工作学习当中,我相信一定会工作与学习地更富有成效。**如:我需要学习 **Flutter的知识。大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。尝辄止,不再深入研究,那么很难做到真正的技术提升。可以看出,笔者的工作学习模式便是由以下。

2401_84558498的博客 1276
上一篇: android 8 wifi 不稳定,安卓手机无线网连接不稳定怎么办 wifi连接不稳定的解决方法...
下一篇: 鸿蒙系统支持安卓游戏账号么,鸿蒙和安卓游戏数据互通吗 安卓游戏账号在鸿蒙系统上能用吗...
weixin_39517357
博客等级 码龄9年 23粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值