效果图

实现思路

这个功能首先想到的是安卓原生控件AutoCompleteTextView和MultiAutoCompleteTextView 前者用的还是比较多的,比如字符联想,最近搜索记录等用的都是前者比较多,后者要着重说下了,它是AutoCompleteTextView的升级版,主要区别是AutoCompleteTextView输入时只能提示一次(这个多次提示可能也可以通过自定义来实现,这里只说原生的对比),而MultiAutoCompleteTextView 中可以通过分隔符比如系统默认的英文逗号分隔符,空格等来实现输入时的多次提示,就是我们图上所示的多次提示功能,是不是很方便哪,这个控件确实很赞,之前没写这块,都不知道有这个原生的控件

因为我在做邮箱的功能,所以我下载了Android的系统邮箱源码

private MultiAutoCompleteTextView mToView;
private MultiAutoCompleteTextView mCcView;
private MultiAutoCompleteTextView mBccView;

可以看到,这是Android4.2的邮箱源码,用的都是原生的MultiAutoCompleteTextView,这三个分别是收件人,抄送,密送控件

mToView.setTokenizer(new Rfc822Tokenizer());
mToView.setValidator(addressValidator);

mCcView.setTokenizer(new Rfc822Tokenizer());
mCcView.setValidator(addressValidator);

mBccView.setTokenizer(new Rfc822Tokenizer());
mBccView.setValidator(addressValidator);

上面这个setTokenizer就是设置分隔符了,这个很关键,设置的分隔符,用来区别输入完成和下次输入的再次提示,所以很重要,setValidator就是验证输入的是否是邮箱,不是的话,给予用户错误提示,让其更改.

上面的基本上就是MultiAutoCompleteTextView最基本的操作和配置了,设置完MultiAutoCompleteTextView数据源,即下拉框中的提示数据,就基本完成了最简单的多次提示了。

下面我要说的是为这个多次提示加上样式,即是题目上所说的仿qq,网易输入框的样式,这里我在看android的源码时发现了一个牛逼的开源控件,这个控件其实就是继承自MultiAutoCompleteTextView实现的多样式,可扩展性很强的一个控件,已经有强大的轮子了,咱们就别造了,关键项目紧张,来不及造,造出来估计bug也会很多,废话不多说

/**
 * Gmail style auto complete view with easy token customization
 * override getViewForObject to provide your token view
 * <br>
 * Created by mgod on 9/12/13.
 *
 * @author mgod
 */
public abstract class TokenCompleteTextView<T> extends MultiAutoCompleteTextView implements TextView.OnEditorActionListener {//Logging
    public static final String TAG = "TokenAutoComplete"; 

这个就是android源码中最新使用的控件,我估计qq,网易也是用的这个开源控件,确实很强大,扩展性特别好,传入一个自定义的对象,根据咱们的业务自己来定义吧,样式等都可以修改,我已经接入了这个控件,确实好用,所以关键代码就不贴了,下面给大家个链接吧

https://github.com/splitwise/TokenAutoComplete

这个demo写的很详细了,大家多多学习,多看安卓的源码,会有意想不到的收获!

Android仿QQ,网易邮箱客户端收件人控件相关推荐

  1. C#仿QQ皮肤-常用用户控件EnterFrom1和窗体EntryForm的实现

    导读部分 ----------------------------------------------------------------------------------------------- ...

  2. Android仿keep运动轨迹动画,Android仿Keep运动休息倒计时圆形控件

    仿Keep运动休息倒计时控件,供大家参考,具体内容如下 源码 控件本身非常非常简单,唯一难点在于倒计时期间动态增减时长,如果说动态增减时长是瞬间完成的,倒也没什么难度,但是如果是需要花一定时间做动画的 ...

  3. Android仿饿了么加减控件,Flutter + Native混合栈仿饿了么APP

    前言 一个基于Flutter + Native混合开发的APP,请求数据均人为制造. 目前仅上传Android版本,iOS暂未上传 APK下载 Github地址 效果图: 实现功能: 首页 使用百度定 ...

  4. android 按钮回弹效果,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

  5. android 布局回弹,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

  6. DELPHI 7 仿QQ好友列表(RZ控件)

    现在在做一个聊天程序,那么就需要有列表.所以自己做了一个 通过RZ控件和动态生成实现 DEMO 的效果 放到程序内的效果 DEMO下载地址: https://download.csdn.net/dow ...

  7. Android仿QQ空间底部菜单

    之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字.于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考.效果如下图所示:  点 ...

  8. Android仿QQ侧滑菜单

    先上效果图: GIF图有点模糊,源码已上传Github:Android仿QQ侧滑菜单 ####整体思路: 自定义ItemView的根布局(SwipeMenuLayout extends LinearL ...

  9. 华为qq邮箱服务器密码忘了,华为自带的电子邮件APP怎么用?一招教你快速登录QQ/网易邮箱...

    *本文来自花粉俱乐部@昌昌兔 很多粉粉们是不是困扰自己常用的QQ/网易邮箱无法在华为自带的电子邮件登入,而又不想下载QQ/网易邮箱APP.其实是因为QQ/网易邮箱的第三方设置安全验证问题.接下来,将为 ...

最新文章

  1. java线程 教程_Java多线程系列教程
  2. tcppwebbrower 关闭安全警报_【安全常识】燃气泄漏报警器,您的安全保护神!
  3. 哪个Java线程消耗了我的CPU?
  4. $.post把表单对象传递过去_FormData对象
  5. 初学WEB前端的建议,你不看给别人可惜了!
  6. java里面的pai_Java - ZhangPai - 博客园
  7. Python学习之路_day_08(函数介绍)
  8. python_正则表达式匹配ip
  9. 无线通信行业常用名词
  10. 使用phantomjs将网页转换成pdf或者长图片
  11. Jzoj5605 Zkb
  12. win10及VS2017安装配置mpich2
  13. 如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
  14. mysql 加上天数_MySQL Datetime添加天数?
  15. 数据库课程设计(DatabaseCourseDesign)
  16. 阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)
  17. 分布式BASE理论:数据一致性模型!
  18. 【挖矿木马】记一次被挖矿木马攻击的过程(Redis被攻击)
  19. Keil MDK 和 IAR 两款ARM开发工具区别比较和Keil MDK 的下载,安装及常见问题解决
  20. OMNeT++学习(概述+框架)一

热门文章

  1. 使用Pixi.js编写JavaScript网页小游戏
  2. TextView 的 AutoLink 属性和 onLongClick 冲突
  3. H5+C3实现超炫酷图品切换效果
  4. 股票量化分析工具V2.0版-视频更新完毕!代码已上传!
  5. java猴子爬山_[算法]猴子爬山
  6. opencv之(多)手势识别
  7. kaggle住房预测项目——第1部分
  8. 【C】printf()使用占位符精细控制输出格式
  9. win10双屏幕设置,有一个不显示了
  10. Dynamics CRM2016 Subgrid之OnLoad event