首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android EditText监听回车并处理两次回调问题

前言 我们都知道,在登面,搜索等等有EditText控件界面上,当用户输入完内容后,点击回车执行逻辑会有非常好用户体验,所以今天我们来学习如何监听EditText监听回车并处理监听发生了两次回调问题..."); return true; } return false; } }); } 我们运行起来,并在EditText中点击回车,会看到如下日志 E/MainActivity...: onKey: 下回车 E/MainActivity: onKey: 下回车 为什么我们会看到两次日志输入呢?...两次回调解答并解决 我们都知道,当我们某个时候,键盘有和抬起两个操作,所以这里两次回调就是回车,回调一次,回车抬起,回调一次。...: 下回车 也可以修改editText回车样式,即是把EditTextImeOptions属性设置成不同值,Enter上就会显示不同文字或图案 actionNone : 回车后光标到下一行

1.6K31

Android编程实现状态保存方法分析

2、当我们在玩游戏时候,可能又想听歌,然后我们home或者back退出游戏去启动音乐,然后再回到游戏,当我们回到游戏时候,发现刚刚状态还是被保存。这种情况,我们可以这样保存状态。...activity A)显示在当前task最上层,其onSaveInstanceState方法会在什么时候被执行,有这么几种情况: 1、当用户HOME。...以下几种情况分析都遵循该原则 2、长按HOME,选择运行其他程序时。 3、电源按键(关闭屏幕显示)。 4、从activity A中启动一个新activity。...onRestoreInstanceState被调用前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性情况,则该方法不会被调用,例如,正在显示activity A时候...,用户HOME回到主界面,然后用户紧接着又返回到activity A,这种情况activity A一般不会因为内存原因被系统销毁,故activity AonRestoreInstanceState

64731
您找到你想要的搜索结果了吗?
是的
没有找到

当你下方向,电视是如何寻找下一个焦点

电视我们都知道,是通过遥控器来操作,没有鼠标也不能触屏,所以“点击”操作变成了遥控器“上下左右确定”,那么必然需要一个“焦点”来告诉用户当前聚焦在哪里。...为什么时隔多年会突然想起这个呢,其实是因为最近在给我开源思维导图添加方向导航功能,想到其实和电视聚焦功能很类似,都是方向,来计算并且自动聚焦下一个元素或节点: 那么如何寻找下一个焦点呢,结合我当时用焦点库原理...1.最简单算法 第一种算法最简单,根据方向先找出当前节点该方向所有的其他节点,然后再找出直线距离最近一个,比如下了左方向,下面这些节点都是符合要求节点: 从中选出最近一个即为下一个聚焦节点...,效果如下: 可以看到阴影算法成功解决了前面的跳转问题,但是它也并不完美,比如下面这种情况左方向找不到可聚焦节点了: 因为左侧没有存在交叉节点,但是其实可以聚焦到父节点上,怎么办呢,我们先看一下一种算法...: 结合阴影算法和区域算法 前面介绍阴影算法说了它有一定局限性,区域算法计算出结果则可以对它进行补充,但是理想情况阴影算法结果是最符合我们预期,那么很简单,我们可以把它们两个结合起来,调整一顺序

53740

Android富文本开发

更详细来说,监听删除点击逻辑需要注意,光标在EditText 输入中间,点击删除不进行处理正常删除;光标在EditText首端,判断前一个控件,如果是图片控件,删除图片控件,如果是输入控件,...12.如何删除图片或者文字 富文本处于编辑状态,点击删除图片是可以删除图片,对于删除逻辑,封装lib可以给开发者暴露一个删除监听事件。...stateAlwaysHidden-总是隐藏状态:设置该状态,软键盘总是被隐藏,和stateHidden不同是,当我们跳转到下个界面,如果下个页面的软键盘是显示,而我们再次回来时候,软键盘就会隐藏起来...stateVisible-可见状态:设置为这个状态,软键盘总是可见,即使在界面上没有输入框情况也可以强制弹出来出来。...stateAlwaysVisible-总是显示状态:设置为这个状态,软键盘总是可见,和stateVisible不同是,当我们跳转到下个界面,如果下个页面软键盘是隐藏,而我们再次回来时候,软键盘就会显示出来

8.4K20

Android仿微信标签功能

而标签形状就用Shape来实现。 在drawable新建xml文件,这里先上Shapexml文件。 tag_normal.xml <?...,这里可以这样实现,创建一个EditText,对其软键盘Enter和Delete按键进行监听,输入完成后Enter则生成一个标签,添加到LinearLayout中。...然后如果标签内文字为空删除,就将它前一个标签状态修改为选中状态。同样地,点击未选择标签也可以选中该标签进行删除。...(params); //添加到layout中 layout.addView(editText); //对软键盘Enter和Del监听 editText.setOnKeyListener(new View.OnKeyListener...= tagView.get(lastIndex); //第一次Del则变成选中状态,选中状态Del则删除 if (tagViewState.get(lastIndex)) { tagView.remove

74710

Android 拦截返回事件实例详解

KeyEvent.KEYCODE_BACK: 表示key类型为返回 KeyEvent.ACTION_DOWN:表示事件为key,如果一直按住不放,则会不停产生此事件。...false; } }); EditText中拦截返回事件 在EditText中同样可以通过调用setOnKeyListener()方法来为EditText增加按键事件监听。...按键事件产生并不会分发到View上。 多个拦截事件冲突与选择 目前在Activity,Dialog和EditText中都可以成功设置拦截事件。如果多个对象设置了拦截事件。...,这时用户可能觉得是下操作没有成功,又再一次返回。...卡顿结束后就出现多次返回现象。为了避免这种情况出现,可以在拦截返回函数中增加时间限制。即如果本次返回事件距离上次处理时间过段,则不处理本次事件。直接return true;消费此次事件。

3.7K20

Android开发笔记(三十六)展示类控件

setHintTextColor : 设置提示文本颜色。 在录入用户信息(比如输入姓名、密码等等),EditText输入回车,常常不要换行而是让光标直接跳到下一个编辑框。...该功能有两种实现方式: 方式一:给编辑框注册一个OnKeyListener监听器(setOnKeyListener方法),检测到回车(keyCode == 66),触发光标跳转操作; 方式二:...给编辑框注册一个TextWatcher监听器(addTextChangedListener方法),检测到文本发生变化并找到回车换行符,触发光标跳转操作; 2、保持当前控件不换行,依旧单行显示。...EditText还有一个需要特殊处理地方,就是自动关闭软键盘。一般我们希望点击其它控件,原输入框软键盘就要自动消失,可惜Android不是这样处理。...另外注意centerInside,图片尺寸大于视图,centerInside等同于fitCenter;图片尺寸小于视图,centerInside等同于center。

1.4K30

onSaveInstanceState和onRestoreInstanceState详解

但是当用户主动去销毁一个Activity,例如在应用中返回,onSaveInstanceState()就不会被调用。因为在这种情 况,用户行为决定了不需要保存Activity状态。...(假定为activity A)显示在当前task最上层,其onSaveInstanceState()方法会在什么时候被执行,有这么几种情况:   (1)、当用户HOME。   ...以下几种情况分析都遵循该原则   (2)、长按HOME,选择运行其他程序时。   (3)、电源按键(关闭屏幕显示)。   ...总而言之,onSaveInstanceState()调用遵循一个重要原则,即系统存在“未经你许可”销毁了我们activity 可能,则onSaveInstanceState()会被系统调用,...确实”被系统销毁了,而如果仅仅是停留在有这种可能性情况,则该方法不会被调用,例如,正在显示activity A时候,用户HOME回到主界面,然后用户紧接着又返回到activity A,这种情况

2.1K50

Android EditText使用详解-包含很多教程上看不到功能演示

EditText我们提供了android:hint来设置EditText内容为空显示文本,这个文本只在EditText为空显示,你输入字符时候就消失了,不影响你EditText文本。。...上面列出了空白提示文字,有的人说了,我不想要这个灰色提示文字,和我应用整体风格不协调,那也行啊,我们可以换颜色,怎么换呢,就是通过android:textColorHint属性设置你想要颜色。...六:Enter图标的设置 软键盘Enter默认显示是“完成”文本,我们知道Enter建表示前置工作已经准备完毕了,要去什么什么啦。...比如,在一个搜索中,我们输入要搜索文本,然后Enter表示要去搜索了,但是默认Enter显示是“完成”文本,看着不太合适,不符合搜索语义,如果能显示“搜索”两个字或者显示一个表示搜索图标多好...actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT 效果: ?

3.7K20

实现Android键盘中英文适配

英文环境,密码框字体和一般字体不一致问题 1、xml中不能设置inputType 属性、或者password属性 2、中文环境中设置inputType可以 3、要是适配英文,只能在Java代码设置...想象一,当我们EditText中完成了输入,想要以输入内容作为关键字进行搜索,却需要按“完成”图标的Enter按键,显然这不符合良好用户体验设计。 ...那么,怎么样来改变Enter按键图标呢? Android为我们提供了android:imeOptions来实现这一功能。...,flagNoEnterAction等,其对应Enter 图标如图所示: ?...activity里状态,无论是隐藏还是显示 【C】stateHidden:用户选择activity,软键盘总是被隐藏 【D】stateAlwaysHidden:该Activity主窗口获取焦点

2.2K10

Android 四大组件学习之Activity六

按钮,并且get按钮 当然了,这时候back按钮,再次进入后,会发现输入框里没有内容,同时get得到为0.0 同时第一种情况中我打印Log.i("FiveActivity", "onSaveInstanceState...这次不Back,这次Home: 当我们Home后,我们Activity就处于stop状态,这时候我们打印语句出现了 这时候我们手动杀死FiveActivity 这时候在启动Activity...,再次get就会发现: EditText文字Hello World依旧存在,而我Value变量变为0.0了。...所以当我们Home出去就会打印出现,至于我们变量为啥没有恢复,很明显那是因为没人保存它值,这就得需要我们程序员自己手动保存。...同时, 除系统资源不足,或者手机屏幕方向变化时,改变语言,都会导致Activity重现销毁,然后重现再创建。这时候如果我们不保存需要保存数据,也会出现不对情况。

27710

android之activity生命周期详解

:   BACK:   当我们BACK我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法,如下图所示:   HOME:...  当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择HOME,然后去打开音乐应用程序,而当我们HOME时候,Activity先后执行了onPause...,当我们HOME,然后再进入ActivityDemo应用时,我们应用状态应该是和HOME之前状态是一样,同样为了方便理解,在这里我将ActivityDemo代码作一些修改,就是增加一个...:)   这时候,大家可以HOME,然后再次启动ActivityDemo应用程序,这时候EditText里并没有我们输入”Frankie”字样,如下图:   这显然不能称得一个合格应用程序...HOME,再次启动应用程序时,EditText里有上次输入”Frankie”字样,如下图如示:   OK,大功基本告成,这时候大家可以在回上面看一Activity生命周期图,我想大家应该完全了解了

54120

安卓应用安全指南 六、困难问题

将TextView设置为可以复制,应调查在TextView中显示任何敏感信息可能性,并且如果有任何可能性,则不应将其设置为可复制。...请注意,开发者在应用规则,还应考虑到应用可用性。 例如,在用户可以自由输入文本视图情况,如果因输入敏感信息可能性很小而禁用了复制/剪切,用户可能会感到不便。...当然,该规则应该无条件地,应用于处理非常重要信息或独立敏感信息视图,但在视图之外情况,以下问题将帮助开发人员了解如何正确处理视图。...因此可以在不忽略时间情况获得ClipData。在任何应用中执行复制/剪切操作,都会调用监听器。...使用这些方法提供自定义复制/剪切功能,必须按需设计/实现,以防止存储在剪贴板中内容改变为意外内容,通过显示对话框来通知内容将被改变。

1.2K10

Android自定义View实现搜索框(SearchView)功能

搜索栏对于我们并不陌生,在许多app都能见到它,比如豌豆荚 image.png 在某些情况我们希望我们自动补全信息可以不只是纯文本,还可以像豌豆荚这样,能显示相应图片和其他数据信息,因此Android...给我们提供AutoCompleteTextView往往就不够用,在大多情况我们都需要自己去实现搜索框。...,这样既可在代码中监听何时search 没什么说,bg属性可以直接看看源码。...需要监听是否search(enter),通知监听者执行search操作 结合以上6点和在上文分析过内容,就能很轻松地实现该view。...这里有一个问题是进入该搜索界面需要加载所有的数据项到内存,数据项很多时,是否会占用大量内存?如果是应该如何避免?是采用只加载一部分数据形式,还是直接使用搜索词到数据库中查询更优?

4.4K10

Android自定义EditText:手把手教你做一款含一删除&自定义样式SuperEditText

前言 Android开发中,EditText使用 非常常见 本文将手把手教你做一款 附带一删除功能 & 自定义样式丰富 SuperEditText控件,希望你们会喜欢。 ?...简介 一款 附带一删除功能 & 自定义样式丰富 SuperEditText控件 已在Github开源:Super_EditText,欢迎 Star ! ? ---- 2....需要具备功能如下: 一删除 丰富自定义样式:左侧图标、删除功能图标、分割线 & 光标 样式变化。...特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一删除功能 在需求中非常常见,现将其封装后更加方便使用 可自定义样式程度高(比自带强大 & 方便...canvas); mPaint.setColor(color); setTextColor(color); // 绘制分割线 // 需要考虑:输入长度超过输入框

1.8K30

Android自定义EditText:手把手教你做一款智能EditText(一删除、自定义样式)

前言 Android开发中,EditText使用 非常常见 本文将手把手教你做一款 附带一删除功能 & 自定义样式丰富 SuperEditText控件,希望你们会喜欢。...简介 一款 附带一删除功能 & 自定义样式丰富 SuperEditText控件 已在Github开源:Super_EditText,欢迎 Star ! 2....特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一删除功能 在需求中非常常见,现将其封装后更加方便使用 可自定义样式程度高(比自带强大 & 方便...View:你需要一款简单实用SuperEditText(一删除&自定义样式) 3.3 二次开发成本低 本项目已在 Github上开源:Super_EditText 具备详细源码分析文档(即本文)...canvas); mPaint.setColor(color); setTextColor(color); // 绘制分割线 // 需要考虑:输入长度超过输入框

1.1K30

【谷歌官方文档】1.1 建立第一个APP

下一节课将学会使 APP 对按钮做出响应——按钮被,文本框里内容被发送到另外一个 Activity。...在Android Studio中,Alt + Enter 可以导入缺失类(在Mac中使用option + return) 5 把EditText文本内容关联到一个本地 message 变量,并使用...定义key为一个public型常量,通常使用应用程序包名作为前缀来定义是很好做法,这样在应用程序与其他应用程序进行交互仍可以确保是唯一。...Android Studio中使用模板,Support Library会自动加入我们工程中(在Android Dependencies中你以看到相应JAR文件)。...在Android Studio中,Alt + Enter 可以导入缺失类(在Mac中使用option + return).

2.4K20

android学习笔记----软键盘换行按键效果测试(imeOptions)

注意:看到其他博客上写都是用android:singleLine="true"(因为默认是多行模式,而右下角按键是用于换行设置为单行模式后就没必要换行了) 但是这个方法文档显示已经废弃了...关于singleLine:@deprecated不推荐使用此属性 格式:boolean 将文本约束为单个水平滚动线,而不是让它包裹在多行上,并在按Enter提前聚焦而不是插入换行符。...使用maxLines来改变静态文本布局(比如TextView需要singleLine效果),并使用inputType属性中textMultiLine标志代替可编辑文本视图(比如EditText需要...break; } Log.d(TAG, "actionid=======" + actionId); return...true; } }); } } 这里只写了edittext2监听事件,actionId为EditorInfo.IME_ACTION_GO 这几个imeOptions

79510

【Android源码解析】 自定义可清除输入框

https://blog.csdn.net/lyhhj/article/details/47417337 今天给大家分享一这个关于Edittext,之前用到过要求能一清除输入框,想了一思路...,可以在输入框旁边放一个小清除图片,然后给Edittext和清除小图片放到布局中,给布局来一个背景图片,看起来也比较美观,然后根据edittext.getText().length来设置小图片是否可见...下面说一自己思路: 1.首先自定义组件继承edittext 2.重写构造方法,初始化一个清楚按钮小图标,并设置它位置 3.监听edittext焦点改变,根据焦点变化显示隐藏小图标 4.重写一个小图标的按钮点击事件...贴上部分代码: /** * 这里我们不能设置edittext点击事件,所以我们可以这样做一: * 当我们位置 是在(输入框宽度-图标的宽度-图标距离右侧宽度)和(输入框宽度...-图标到右侧宽度)之间 * 也就是说我们位置处于图标的附近,设置输入框 * by Hankkin at:2015年8月11日 16:45:42 * @param

79810

Android View教程之自定义验证码输入框效果

前言 首先,我们来看看实现是怎么样效果: ?...如果我们拿到这样UI,想到布局应该是用4个EditText包在横向LinearLayout里面,但今天要讲View,所以我们决定用一个自定义EditText 画出来。 学到什么?...好了,到这里理一整体思路: 根据验证码个数以及边框大小来计算输入框显示宽度 覆盖原来EditText画布,重新绘制方框 根据输入索引来确定高亮方框 重写onTextChanged 但满足验证码个数时候调用自动完成方法...1、调用canvas.save();保存当前画布状态,用PS来解析就是ctrl +s,然后帮你新建一个新图层。...2、把画布位置移到下一个位置canvas.translate(x,y),下图所示,你会发现方框在画布中位置没有发生变化而是画布距离发生了变化。这就是画布平移效果了。 ?

1.2K30
领券