keyboard dialog 仿微博表情键盘输入框
功能描述:弹出键盘,右边有最大化按钮,没有最大化的时候最大行数为3,默认1行,随着文字输入增加自动增加高度,到达3行时不会在增加,点击最大化输入框,行数无限制,输入框下方图片点击删除
此处为了简便,键盘监听用了一个库,如果自己写也简单,直接 addOnGlobalLayoutListener 便可
首先是点击 edittext ,然后键盘自动弹起
这里的键盘弹起是在dialog里面提供了一个开关
然后是xml,xml有点讲究,不然达不到自动的效果,这也是实验了多种方式布局选择的一种
图中看出edittext输入框包含了图片浏览一起,其实只是背景效果,两者是分开的,上部分是输入框,下部分是一个列表,两者容器设置一个shape背景,这也看起来就跟一个整体一样,图片嵌入在了输入框里面,然后最下面是一个viewpager的表情列表
这种方式的布局可以达到一个效果,输入文字增加输入框会自动夸张行数高度,到了maxline后会停止,一开始想直接用约束的,不过试了几种方法达不到最终的效果,因为最大化后约束也会影响着布局,这样要控制的话逻辑代码就多了,所以为了简化这一步逻辑,里面用的常用布局方式,但是外层依然可以约束起来,这样一来最大化就只需要一小段代码就能完美的切换了,我只需要控制输入框的大小,其它布局都会自动调整约束,这样避免了很多逻辑控制操作
但是这里需要一个高度,不然约束布局起不到作用,除非全部使用常用布局,但是嵌套太多,自从用了 ConstraintLayout 就有强迫症,多一层嵌套心里就不舒服,但是这里也好处理,因为我们需要监听键盘的状态,居然都要监听,那么也就不算多出的逻辑
上图为切换表情输入框状态时的布局显示隐藏操作
然后我们外层一般使用 setCanceledOnTouchOutside 让dialog点击自动消失,但是这里还有一个要点,就是你操作想要手动让dialog关闭的时候需要使用另外的dialog关闭方法去关闭,否则有的时候dialog中的键盘关闭不了,比如点击发送,我们需要
关闭键盘和dialog
到这里一个输入框的雏形就有了
有了输入框下面的表情就简单许多了,这里直接用一个recyclerview显示,布局都可以随自己喜欢更换,把资源文件存入assets中,这里是仿照云信的做法,会自动读取表情文件目录,然后加载数据,而且配置也方便
最开始是显示表情,因为这里用的是默认表情,需要一定的顺序要求,所以用一个单独的xml文件,固定位置,自定义参数读取
这里读取资源是读取的xml文件,用 DefaultHandler,调用该类的时候提供一个静态加载,调用load方法
然后读取节点,存入集合
然后就是简单的读取集合数据,加载recyclerview数据显示默认表情,添加点击事件,点击后回调,把xml节点中的tag标签设置到输入框中,这里需要一个方法去把tag转换成表情显示
这里是在 addTextChangedListener 方法监听去匹配的,不是在click事件里
上面是大致的表情实现流程
GitHub:https://github.com/1024477951/FragmentApp
转载于:https://www.cnblogs.com/LiuZhen/p/10297446.html
keyboard dialog 仿微博表情键盘输入框相关推荐
- android仿微博底部键盘,keyboard dialog 仿微博键盘
功能描述:弹出键盘,右边有最大化按钮,没有最大化的时候最大行数为3,默认1行,随着文字输入增加自动增加高度,到达3行时不会在增加,点击最大化输入框,行数无限制,输入框下方图片点击删除 此处为了简便,键 ...
- iOS_仿QQ表情键盘
当UITextFiled和UITextView这种文本输入类控件成为第一响应者时,弹出的键盘由他们的一个UIView类的inputView属性来控制,当inputView为nil时会弹出系统的键盘,想 ...
- ios 表情符号 键盘_iOS中表情键盘的完整实现方法详解
前言 最近在公司做了个表情键盘的需求,这个需求的技术难度不会很大,比较偏向业务.但是要把用户体验做的好也是不容易的,其中有几个点需要特别注意.话不多说,下面开始正文(注:本文对应的Demo放在Gith ...
- iOS开源组件__仿写QQ/微信聊天键盘(表情,问题,输入框)纯代码,无依赖
前言 1.由于项目需求,需要一个类似QQ/微信的聊天键盘,包括语音,emoji和发送图片,文件,位置,网上找了一番,要不功能不够完善,要不依赖太多,于是干脆自己写一个(在使用过程中如果发现什么问题或有 ...
- 转载 仿微信表情与软键盘冲突
android高仿微信表情输入与键盘输入(详细实现分析) 本文是我在做仿微信IM时,解决表情栏与软键盘冲突时参考的文章,很有价值,故在此将之转载,以便后期学习. 目录(?)[+] 解决表情与键盘切换跳 ...
- android高仿微信表情输入与键盘输入详解-解决跳闪与表情切换问题
最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个相当困扰我,不过所幸在Github(其中一个不错的开源项目是https://git ...
- android高仿微信表情输入与键盘输入详解
转载请注明出处: http://blog.csdn.net/javazejian/article/details/52126391 最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还 ...
- android高仿微信表情输入与键盘输入(详细实现分析)
转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/52126391 出自[zejian的博客] 表情与键盘的切 ...
- android 调出键盘表情_android高仿微信表情输入与键盘输入代码(详细实现分析)
表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决 ...
- (转)Android高仿微信表情输入与键盘输入(详细实现分析)
原地址:http://blog.csdn.net/javazejian/article/details/52126391 转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.n ...
最新文章
- 谷歌这波大动作,暴露了什么信号?
- RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
- Segments POJ 3304 直线与线段是否相交
- C++实现简单选择排序
- ext的另一个table布局的例子
- SQL Server AlwaysOn集群在辅助副本创建只读账号
- 2345联盟通过流氓软件推广挖矿工具, 众多用户电脑沦为“肉鸡”
- C++ const function
- 管理感悟:一个人的工作效率是不可能提高的
- linux 搜索文件后缀名,Linux -find、文件后缀名
- ✿ iBm T60 水货入手了 满意 2005
- [硬件]_ELVE_STLINK下载出现nternal command error问题
- android降低屏幕分辨率,让游戏更尽兴 手动调低Android手机屏幕分辨率
- 2017年sfdc工作总结_Name 顺序
- oracle 允许级联删除,oracle系列--级联删除和级联更新
- 清空H3C交换机CF存储回收站空间
- T-SQL数据库修改、删除
- HTML中的大于号和小于号怎样用代码打出来?
- tshark命令示例
- 英文翻译法语-英文法语翻译软件