功能描述:弹出键盘,右边有最大化按钮,没有最大化的时候最大行数为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 仿微博表情键盘输入框相关推荐

  1. android仿微博底部键盘,keyboard dialog 仿微博键盘

    功能描述:弹出键盘,右边有最大化按钮,没有最大化的时候最大行数为3,默认1行,随着文字输入增加自动增加高度,到达3行时不会在增加,点击最大化输入框,行数无限制,输入框下方图片点击删除 此处为了简便,键 ...

  2. iOS_仿QQ表情键盘

    当UITextFiled和UITextView这种文本输入类控件成为第一响应者时,弹出的键盘由他们的一个UIView类的inputView属性来控制,当inputView为nil时会弹出系统的键盘,想 ...

  3. ios 表情符号 键盘_iOS中表情键盘的完整实现方法详解

    前言 最近在公司做了个表情键盘的需求,这个需求的技术难度不会很大,比较偏向业务.但是要把用户体验做的好也是不容易的,其中有几个点需要特别注意.话不多说,下面开始正文(注:本文对应的Demo放在Gith ...

  4. iOS开源组件__仿写QQ/微信聊天键盘(表情,问题,输入框)纯代码,无依赖

    前言 1.由于项目需求,需要一个类似QQ/微信的聊天键盘,包括语音,emoji和发送图片,文件,位置,网上找了一番,要不功能不够完善,要不依赖太多,于是干脆自己写一个(在使用过程中如果发现什么问题或有 ...

  5. 转载 仿微信表情与软键盘冲突

    android高仿微信表情输入与键盘输入(详细实现分析) 本文是我在做仿微信IM时,解决表情栏与软键盘冲突时参考的文章,很有价值,故在此将之转载,以便后期学习. 目录(?)[+] 解决表情与键盘切换跳 ...

  6. android高仿微信表情输入与键盘输入详解-解决跳闪与表情切换问题

    最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个相当困扰我,不过所幸在Github(其中一个不错的开源项目是https://git ...

  7. android高仿微信表情输入与键盘输入详解

    转载请注明出处: http://blog.csdn.net/javazejian/article/details/52126391   最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还 ...

  8. android高仿微信表情输入与键盘输入(详细实现分析)

    转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/52126391 出自[zejian的博客]   表情与键盘的切 ...

  9. android 调出键盘表情_android高仿微信表情输入与键盘输入代码(详细实现分析)

    表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决 ...

  10. (转)Android高仿微信表情输入与键盘输入(详细实现分析)

    原地址:http://blog.csdn.net/javazejian/article/details/52126391 转载请注明出处(请尊重原创!谢谢~):  http://blog.csdn.n ...

最新文章

  1. 谷歌这波大动作,暴露了什么信号?
  2. RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
  3. Segments POJ 3304 直线与线段是否相交
  4. C++实现简单选择排序
  5. ext的另一个table布局的例子
  6. SQL Server AlwaysOn集群在辅助副本创建只读账号
  7. 2345联盟通过流氓软件推广挖矿工具, 众多用户电脑沦为“肉鸡”
  8. C++ const function
  9. 管理感悟:一个人的工作效率是不可能提高的
  10. linux 搜索文件后缀名,Linux -find、文件后缀名
  11. ✿ iBm T60 水货入手了 满意 2005
  12. [硬件]_ELVE_STLINK下载出现nternal command error问题
  13. android降低屏幕分辨率,让游戏更尽兴 手动调低Android手机屏幕分辨率
  14. 2017年sfdc工作总结_Name 顺序
  15. oracle 允许级联删除,oracle系列--级联删除和级联更新
  16. 清空H3C交换机CF存储回收站空间
  17. T-SQL数据库修改、删除
  18. HTML中的大于号和小于号怎样用代码打出来?
  19. tshark命令示例
  20. 英文翻译法语-英文法语翻译软件

热门文章

  1. RN开发系列<2>--基本调试
  2. 2015年传智播客java_2015年最佳Java教程
  3. 深入浅出通信原理pdf_「PLC」精品资料包,西门子+三菱+AB+台达,50本高清PDF
  4. GHOST自动恢复说明
  5. oracle分析函数详解
  6. Oracle分析函数汇总(超全)
  7. 将mysql服务从C盘(原),安装到新路径D盘下(其中的数据一并迁移)
  8. Unity3D数学工具(Mathf)
  9. java生成 折线图
  10. 2022年蓝桥杯基础题目合集C语言