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

微博的文本编辑和显示(emoji表情,@某人、链接高亮点击)

(), 0); SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(editText.getText...和TextView中 对于文本我们最后都处理为Spannable 返回,显示的时候只需要setText即可。...有时候,一个女朋友是不够的,额···┑( ̄Д  ̄)┍TextView除了显示表情之外还需要对URL和手机号码实现高亮可点击,这时候就需要在表情之外增加其他的了逻辑了。...3)、删除的时候对应删除list里面的id和name。 4)、不能直接使用Span来改变颜色,不然某些机器中会导致@块后面的字体效果直接变为@一样的样式(目前不知道什么原因)。...(spannableStringBuilder); editText.setSelection(editText.getText().length()); } 就到这了,米娜桑,下面是demo和

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

    真·富文本编辑器的演进之路-Span的整体性控制

    通过SpanWatcher控制 第二种方案,我们使用普通文本,但是对普通文本增加Span标记,并对这个Span做整体性控制,这种方案复杂一点,要处理的地方也比较多,但是由于它使用的是普通文本,所以在样式上可以和其它普通文本完全保持一致...着色 首先,我们来实现普通文本的变色功能,做一个蓝色的字色,这个比较简单,可以使用ClickableSpan或者其它Span来着色,为了方便我们富文本的输入和展示,这里直接选择ClickableSpan...其实,Android的Span不仅功能非常强大,而且也提供了非常完善的管理API,在TextView和Edittext中,我们要监听Text的变化过程,可以使用TextWatcher,它可以在文本发生改变时进行回调...在TextVIew的内部,它通过DynamicLayout来渲染Spannable数据,在其内部会设置SpanWatcher来监听Span的新增、修改和删除,当监听到变化后,会调用其内部的方法进行刷新。...看完了SpanWatcher,再来看下Selection,Selection是为TextView和Edittext设计的一套管理选中态的工具类,借助Selection,可以在不依赖具体View的情况下,

    2K30

    让你的EditText删除表情比微信更高效--记一次android性能分析优化实战

    前言 自己在做SpEditTool:一个支持表情,@mention,#话题#等功能的EditText控件,这个项目的时候出现了一个很奇怪的问题 EditText输入表情过多的时候,从中间开始删除表情,会出现非常卡的情况..., spData.end);这一行 精确定位 再准备顺藤摸瓜找到卡顿的真正元凶,但是代码跳着跳着就到SpannableStringBuilder和TextView这两个超大的类里去了,在哪卡的还不知道自己就绕晕了...SpannableStringBuilder设置给EditText 最后设置光标位置 完成这一系列操作之后demo一跑,删除果然变流畅了,当时心里那个高兴啊,竟然做个功能可以比微信实现的还好那么一点 输入法问题...的相关方法 对和Span相关的方法特殊处理 贴上WatcherWrapper 的代码,自定义SpannableStringBuilder代码就不贴了,大家可以去项目里找com.sunhapper.spedittool.view.SpannableBuilder...希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!

    1.4K30

    Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    当然,如果我使用这种方式,就不会有这篇博客了。其实Android SDK便有一个优秀的Span管理器,那就是SpannableStringBuilder。...也就是说,我们可以不使用EditText自身的API却能够管理它的光标活动和选中状态(请注意这几句话,他是“优雅实现”的基石)。 Selection管理光标活动。那么,SpanWatcher又是什么?...我要让它就像使用普通EditText一样正常使用setText()方法。 需要思考的问题是,SelectionSpanWatcher在哪里消失了?我要重新找回这个轴承。...当TextView.isTextSelectable()返回true时,TextView的文本模式; 3)BufferType.EDITABLE EditText的文本模式,可编辑,带文本样式。...android.widget.TextView#setEditableFactory(Factory) 下面是重写的Editable.Factory,作用是重新把NoCopySpan设置到SpannableStringBuilder

    2.3K30

    EditText的属性和使用方法

    EditText与TextView非常相似,它甚至与TextView 共用了绝大部分XML属性和方法。EditText与TextView的最大区别在于:EditText可以接受用户输入。...一、EditText简介 EditText支持的XML属性及相关方法见TextView表中介绍的与输入有关的属性和方法,其中比较重要的一个属性是inputType,用于为EditText设置输入类型,其属性值主要有以下一些...EditText还派生了如下两个子类。 n AutoCompleteTextView:带有自动完成功能的EditText。由于该类通常需要与 Adapter结合使用,因此将会在下一章进行学习。...同TextView示例程序一样,同样使用WidgetSample工程,在app/main/res/layout/目录下创建一个edittext_layout.xml文件,然后在其中填充如下代码片段: EditText的示例程序就先到这里,关于其他使用方法建议大家自己进行练习。

    2.6K90

    真·富文本编辑器的演进之路-Span开胃菜

    所在的端点,即[a,b] 创建Span的数据结构 当我们使用Span时,主要会使用到下面几个类,SpannedString、SpannableString 或 SpannableStringBuilder...{} override fun getLeadingMarginLineCount(): Int = lines } 使用时,只需要根据Image计算好TextView需要留出的行数和边距即可...Selection Selection用于在Edittext中执行选中功能,在开发富文本编辑器的时候,这是必不可少的的部分,而且Selection独立于EditText,可以在不使用EditText的情况下...下面通过一些场景来分析ImageSpan的核心逻辑和使用方式。 直接使用资源文件 这是ImageSpan的最基本使用方法,代码如下所示。...因为当点击ClickableSpan时,TextView的selectionStart和selectionEnd会改变,这时候就不用处理TextView的点击事件了,经过这层过滤,就实现了TextView

    2.6K20

    处理屏幕旋转导致的重建,单例对象,StringBuilder进行拼接,ProGurad 混淆,VectorDrawable 及 AnimatedVectorDrawable,IntentService

    在EditText控件中输入后,当屏幕旋转后,里面的内容就会不见,activity进行了重建,但是checkBox不会重建。...单例对象在需要的时候初始化 在使用单例时,我们应当仅在使用到该单例时才去初始化它,这里我们可以通过“静态初始化会在类被加载时触发”这一原理,来实现懒加载。...://www.jianshu.com/p/723dc385eafe 对于只执行一次的后台任务,使用 IntentService 替代 Service 当我们需要将某些任务的生命周期和Activity分离开来...ViewStub 动态加载布局 进行布局复用: SpannableStringBuilder 替换多个 TextView LinearLayout 自带的分割线: android...android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1"/> TextView

    6610

    【整理篇】Android 开发小技巧

    /storage/emulated/0/… 手机内部存储路径 mEditText.setKeyListener(null); EditText设置不可编辑,比focusable、enable更粗暴 android...android:attr/selectableItemBackground" item的水波纹效果,在item的View加上这一属性, 5.0+才行 includeFontPadding=“false” 去除TextView...上下的padding viewpager的item点击事件 viewpager底层拦截了点击事件,所以点击事件写在adapter里面 android:imeOptions=“actionDone” EditText...修改软键盘的回车键 android:contentDescription="@null" ImageView去除缺少描述的警告 tools:text=“预览” 使用tools属性工具预览布局 android...() 验证用户输入 Context.getCacheDir() 获取缓存数据文件夹的路径 DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化和本地化的时间或者日期

    65620

    textview设置字体大小-设置textview字体样式

    设置样式 可以在代码中设置   也可以在xml中设置   一些字体基础的设置,都可以的textview设置字体大小,但是我们能满足吗?...), 7, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView4.setText(sb); //字体颜色多样,设置其他样式也可以使用...ScaleXSpan(0.5f), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView9.setText(sb4);   当然,这些都是自带的都可以解决textview...mgr, "fonts/kukup_cloud.TTF"); mTextView11.setTypeface(tf1); mTextView11.setText("华文彩云");   如果有人想全局都使用自己的字体...ok,你可以这样做:   然后 在布局文件中使用自定义的文字控件就可以了。。   附快速创建assets文件的方法   下面是效果图   忘了 还有29种文字样式下载地址:

    3.1K20

    Android中TextView文字设置不同的颜色

    在项目的过程中会遇到在一行文字中,部分功能需要不同的文字颜色来展示,下面介绍两种方式实现: 效果图: [wqs2rn595h.png] 这里写图片描述 方式一: 用SpannableStringBuilder...来实现 TextView tv=(TextView)findViewById(R.id.tv); String content = "只会玩战士回复冷云他大叔:啊哈哈哈或"; SpannableStringBuilder...Spanned.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终了下标,包括起始下标 Spanned.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终了下标,同时包括起始下标和终了下标...Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 从起始下标到终了下标,但都不包括起始下标和终了下标 Spanned.SPAN_EXCLUSIVE_INCLUSIVE 从起始下标到终了下标...,包括终了下标 方式二: 用HTML的方式实现: TextView tv=(TextView)findViewById(R.id.tv); String str="<font color='#4d8ade

    9.8K20

    Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    白雪公主”/“小矮人”,就可以进入到这俩用户相应个人主页) 2、点击 回复的文字,就可以对回复人进行回复(即点击评论中回复的内容“你们好啊~”,便对弹出一个编辑框对回复人“白雪公主”进行回复) 3、回复人 和...作为一个android开发者,我们要实现对一个TextView : 1、点击不同的文字部分(文字个数还不确定)有相应的响应操作(进入个人主页等等) 2、一个TextView中某些文字有不同的颜色 下面学习如何实现...----------------------------------------------------------- 首先介绍下QQ空间说说列表这一个界面(fragment来实现)的整体框架: 1、使用...1、RecyclerView 自带实现复用机制,对于工作1--2年左右的,不建议使用自己写的复用ListView 2、RecyclerView 方便对于某一个item 项的增删改操作 (大优势),比如控件删除该说说的功能的实现...来展示,经测试,太麻烦且易出错) 不可滑动的ListView 代码 --> 自定义不可滑动的ListView和GridView -------------------------------------

    2.7K60
    领券