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

如果我还向EditText添加文本,如何在ImageSpan上消除不需要的空格?

要在ImageSpan上消除不需要的空格,可以使用SpannableStringBuilder类来处理文本。以下是一个示例代码:

代码语言:txt
复制
// 创建一个SpannableStringBuilder对象
SpannableStringBuilder builder = new SpannableStringBuilder();

// 添加文本到SpannableStringBuilder
builder.append("这是一段文本");

// 创建一个ImageSpan对象,用于插入图片
Drawable drawable = getResources().getDrawable(R.drawable.your_image);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan imageSpan = new ImageSpan(drawable);

// 在指定位置插入ImageSpan
int start = builder.length(); // 获取当前文本长度
builder.append(" "); // 添加一个空格
builder.setSpan(imageSpan, start, builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

// 移除不需要的空格
String text = builder.toString().replace(" ", "");

// 设置处理后的文本到EditText
editText.setText(text);

在上述代码中,我们首先创建了一个SpannableStringBuilder对象,然后使用append()方法添加文本到该对象中。接下来,我们创建了一个ImageSpan对象,并设置图片的边界。然后,我们在指定位置插入ImageSpan,这里我们在文本末尾添加了一个空格,并将ImageSpan应用于该空格。最后,我们使用replace()方法将不需要的空格从文本中移除,并将处理后的文本设置到EditText中。

请注意,上述代码中的R.drawable.your_image需要替换为你自己的图片资源。另外,如果需要在其他位置插入ImageSpan,可以根据需要调整startbuilder.length()的值。

关于SpannableStringBuilder和ImageSpan的更多详细信息,你可以参考腾讯云文档中的相关内容:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

首先,创建一个ATSpan,继承自ImageSpan,附带@数据信息 解析要添加文本数据,将要展示内容,例如「@xuyisheng」,作为文本,创建一个TextView来承载 将生成TextView...: 首先,由于是ImageSpan,所以在与普通文本对齐方式,始终会存在一些误差,这些误差有来自TextView-Drawable转换过程,也有ImageSpan对齐过程,所以,在样式,对齐会有一些问题...控制选中 在讲解如何在普通文本中对Span做整体性控制前,我们先来考虑下选择问题——如何让「整体性Span」内部无法被选中。 首先,我们要知道,Edittext光标也是一种Span。...那么问题来了,要怎么监听Edittext光标呢?...Edittext提供了Editable.Factory来自定义添加SpanWatcher,我们只需要在初始化时候传入即可,代码如下所示。

2K30

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

ImageSpan 可以根据设定好文本长度,对对应文本进行替换显示。...因为考虑到字数限制还有大小问题,下面还有对应参数,大小一般设置是20dp(够大了吧= =),插♀入时候注意当前光标位置哟,而Android文本输入框一般对于ImageSpan 回退都是整个删除...如果识别到了,那么就将这个位置用 Map map记录下来这个位置用于后面判断。 判断这个位置下名字前面是否有@、后面是否有空格或者\b。...@名字\b这个格式,那么监听EditText文本变化,判断如果被删除是\b,那么就把\b到@文本直接删除。...2、同样是在文本框中监听如果输入文本是增加,而且@符号,那么就通知跳转到用户选择页面。

2.2K20
  • Android实现EditText图文混合插入上传功能

    前段时间做了一个Android会议管理系统,项目需求涉及到EditText图文混排,如图: ? 在上图”会议详情”中,需要支持文本和图片混合插入,下图演示输入示例: ?...二、实现思路 如果要在一个EditText中显示图片,首先得简单了解一下SpannableString和ImageSpan使用。...在上面的图文混排EditText中,虽然看到了生动图文效果,但是实际输出EditTextget Text().toString(), 其实是:”插入一张图片<img src=\”” + url1...至此,android edittext图文混合插入需求就已经完成了。 三、补充说明 Q1: 为什么要把图片上传到服务器获取url?...如果不需要保存图文混合插入内容,那就不必执行这一步,在imageSpan替换时,可以用任意字符替换,因为对于spannebleString而言,插入图片其实就是一些字符而已,这一点可以输出edittext.gettext

    1.3K30

    Android 千变万化 TextView:神奇 SpannableString

    英语词典还真不太好查,自己理解意思是:可测量、可塑造,所以 SpannableString 就是一种可测量可塑造字符串。...enter image description here 9)添加项目符号 关于这一点,客观地说用处不大,SpannableString 虽然支持设置项目符号,但是实际开发中基本不会用,如果是页面中栏位...enter image description here 10)文字横向和纵向拉伸 一般我们要改变字体大小,都是设置 textSize 属性,这个属性是文字整体等比例放大缩小,那如果只想文字横向拉伸呢...1)分析 整个过程可以分成两步,第一步是让输入框 EditText 可以输入表情,第二步是把输入框输入表情显示到 TextView 。...(3)根据 EditText textSize 设置 drawable 大小,为了看上去表情和文字是协调直接把 drawable 宽高设置成了textSize。

    4.1K20

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

    Span会导致TextView重新测量文本,以实现正确布局和渲染,例如,更改文本大小可能会导致字词显示在不同。...如果需要在行对Background进行修改,那么就可以重写LineBackgroundSpan。...不会有任何样式改变,但是这段文本已经被标记为User类型,你可以理解为User类是一个未修改任何样式Span。...Selection Selection用于在Edittext中执行选中功能,在开发富文本编辑器时候,这是必不可少部分,而且Selection独立于EditText,可以在不使用EditText情况下...ImageSpan是富文本核心成员,通过ImageSpan,理论可以实现各种富文本效果,虽然有些场景效果差强人意,但足以体现出它强大,所以,掌握ImageSpan,是掌握富文本重中之重。

    2.5K20

    Android控件之TextView

    零、前言 1.今天总结一下TextView 2.TextView在View家族地位是:源码行数11000+,可以说是个大类 3.TextView直接继承自View,EditText,Button...,CheckBox都是它后代 4.TextView可以说常用至极,所以掌握TextView是必要 5.一些细小偏僻点在这里综合一下,以便用时好找 --- 一、拿一个Hello WorldTextView...textview富文本,这里简单实现下图效果: [SpannableString] mIdTv.setText(seal()); private SpannableString seal() {...imageSpan = new ImageSpan(drawable); ssSeal.setSpan(imageSpan, 0, 2, Spanned.SPAN_INCLUSIVE_INCLUSIVE...更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你喜欢与支持将是最大动力

    1.3K20

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

    3、保证文本绑定数据安全可靠 当我们把Span绑定到文本以后,我们需要在文本发生变化时,保证文本和数据安全性,可靠性,一致性。...; 3)占位符,使用不可分割Span(ImageSpan)替换,这是QQ做法。...轮子都造好了,你告诉轴承断了。 并且,当你打印EditText文本Span时,你找不到SelectionSpanWatcher。...如果你这么做,你会发现一个新问题。setText()添加文本没有效果。似乎我们不能通过setText()添加内容,只能使用getText()追加内容。...如果有一个View,即使它并未attach到Window,我们也可以手动调用measure()、layout()、draw()方法获取一个View截图Drawable用来添加ImageSpan中使用

    2.2K30

    Android实现EditText文本编辑

    前言 本文是之前写这篇文章《Android图文混排-实现EditText图文混合插入上传》升级版,除了在EditText实现了图片上传之外,还包含了视频上传、云盘文件上传、录音上传以及显示上传进度...图片或视频上传进度改变时,切回主线程不断更新UI,所谓更新UI,其实就是不断去替换这个SpannableString。对于各种样式ImageSpan,实际都是BitmapDrawable。...实现富文本元素插入到EditText中 实现代码如下: public static TaskSpan getAudioSpan(Context context, int type, String json...继承了ImageSpan, 将音频播放条这个view转换成了drawable,因此它就可以在EditText中显示了。...同理图片、视频、文件实现方式也是如此。 实现富文本元素点击事件 要做到点击视频跳转到视频播放页面,点击音频播放音频,点击文件跳转到文件预览页面,就必须给这些富文本元素添加点击事件。

    1.7K30

    【Android】强大SpannableStringBuilder

    虽然经常加班,不过相比之前工作,现在过得更加充实、更有意义。 现在有点空闲时间,继续分享之旅~~ 效果 什么都不说,先看个炫酷效果。 效果 ‘什么,这也算炫酷?’...也许你会这么说 如果告诉你,这个页面中只用了一个TextView呢 ?你没看错!只有一个TextView,没别的!!!...(这是一个内容和标记都可以更改文本类) 不同于我们平时赋值使用String、StringBuffer等,只能给TextView设置文本内容,而文本样式只能用TextView来控制,而且该样式可定制性还不大好...已知可用类有: BackgroundColorSpan : 文本背景色 ForegroundColorSpan : 文本颜色 MaskFilterSpan : 修饰效果,模糊(BlurMaskFilter...自己去试试看,哈哈哈~~ 这边有一个在CSDN看到解决方法,可以从另一个角度来解决这个问题。——解决方案 组合使用 当然,上面的这些用法都能组合使用。来个?

    2.5K120

    Android训练课程(Android Training) - 构建你第一个应用

    如果应用一些特性可能仅仅在较新版本,并且它不是在你所有应用特性中起到决定性作用的话,你可以在它运行在它支持版本时才启用它。...在真实设备运行 如果你拥有一个安卓动力设备,在这里展示了你如何安装和启动你应用: 1.使用USB线将你设备插入到你开发机器(译者注:可能是电脑)如果你使用window是开发,你可能需要为你设备安装适当...添加一个文本框 为了创建一个用户可编辑文本区,在 .下添加一个 元素。...添加字符串资源 当你需要添加文本到用户界面时,你应该总是以资源方式指定每一个字符串。字符串资源使得你可以在一个位置里管理你所有的界面文本,这使得很容易找到和更新字符串文本。...在sendMessage() 方法内部,使用 findViewById() 去获得 EditText 元素,并且添加文本值到intent里。

    2.2K00

    Android电话拨号器实例详解

    (这里说一下,如果电脑配置不是很高,但有Android真机的话,用真机吧,模拟器真的是太慢了) 首先,做UI,大概是酱紫: ?...这个很简单了,需要添加三个控件“Text View”“Edit Text”“Button”,再加一个布局,布局可以自己选LinearLayout。...从大方面看,我们要实现打电话功能。那我们细分一下逻辑流程,首先我们在文本框内输入号码,然后我们点击按钮就可以拨通电话,大概就是这样过程。...) findViewById(R.id.editText); btn_call=(Button)findViewById(R.id.button); //为button添加点击事件...最后是测试,是真机测试。模拟器太慢,真机要快很多。 以上就是本文全部内容,希望对大家学习有所帮助。

    1.1K21

    更好地构建:区块链用例简单指南

    如果我们数据库不需要大量利益相关者之间协调,并且可以使用一个关键“编写者”功能,那么我们应该使用集中式数据库。...区块链本质是“分布式账本技术”,如果不需要“分配”数据库所有权,那么我们应该使用不同数据库结构。 这一点虽然简单,但在构建优质区块链用例过程中往往会被遗忘。...由于区块链安全功能(“拜占庭容错”)(防篡改和不一致)不需要考虑,因此实施起来要容易得多。...如果我们事务确实相互依赖,那么确定如何在主节点之间分配相应事务变得非常困难,这导致需要类似区块链来改变数据库集体状态。...附录 本文精神,认为我会在下面添加一些最喜欢区块链使用案例 - 鼓励大家把它们作为一个练习来思考使用例有价值因素!

    1.1K80

    Android富文本开发

    何在ViewGroup中添加view,删除view时给相应view和受影响其他view添加动画,不太容易做。...如果光标已经顶在了editText最末端,则需要添加imageView 如果光标已经顶在了editText最中间,则需要分割字符串,分割成两个EditText,并在两个EditText中间插入图片...// 如果光标已经顶在了editText最末端,则需要添加imageView和EditText } else { //如果光标已经顶在了editText最中间...当前编辑器已经添加了多个输入文本EditText,现在问题在于需要记录当前编辑EditText,在应用样式时候定位到输入控件,在编辑器中添加一个变量lastFocusEdit。...富文本开源库:https://github.com/yangchong211/YCCustomText 你star是开源动力,谢谢!

    8.5K20

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

    menu/ 存放应用里定义菜单项文件。 values/ 存放其他xml资源文件,string,color定义。string.xml定义了运行应用时显示文本"Hello world!"...在真实设备运行 如果有一个真实Android设备,以下步骤可以使我们在自己设备安装和运行应用程序: 手机设置 把设备用USB线连接到计算机上。...View 是通用 UI 窗体小组件,:按钮(Button)、文本框(Text field);而 ViewGroup 则是用来定义子视图布局不可见容器,:网格部件(grid)、垂直列表部件(vertical...添加一个文本输入框 与其它 View 一样,我们需要定义 XML 里某些属性来指定 EditText 属性值。...因为使用值是存在资源,所以不需要使用 + 号。当然,由于你现在还没有定义字符串,所以在添加 @string/edit_message 时候会出现编译错误。

    2.4K20

    Android开发笔记(一百四十六)仿支付宝支付密码输入框

    编辑框EditText算是Android一个基础控件了,表面上看,EditText只负责接收用户手工输入文本;可实际,要把这看似简单文本输入做得方便易用,并不是一个简单事情...当然,在界面展现,需要以横排方格形式加以显示。于是可以考虑,把支付密码输入与显示操作分离开来,即密码输入操作仍由EditText处理,而密码显示操作则由自定义方格布局接管。...,每当密码输入或者删除之时,就通知方格布局更新密文显示;同时还得监控输入字符数是否达到6位,如果达到6位就触发密码完成事件; 对于接管密码显示方格布局来说,需要实现以下几项操作: 1、建立一个密码文本队列...,队列长度为6; 2、每项密码文本控件都是一个TextView,文字居中对齐; 3、往布局添加TextView队列时,在相邻TextView之间要添加一条竖线,也就是宽度为1灰色View; 4、依据转换规则...,决定当前显示明文还是密文;如果是密文,则显示哪个密文字符; 5、每当EditText文本发生变更之时,相应更新TextView队列各项文本显示; 上述改造内容,大部分都有可以直接调用函数,

    1.9K30

    RxBinding详解: 规范而强大安卓UI响应式编程

    一段时间后,你fragment或者activity中由于各种匿名类而显得十分混乱。这时,如果你想再为该类中控件/视图添加由其它视图触发响应事件,那将变得非常复杂。...添加文本改变事件: final EditText name = (EditText) v.findViewById(R.id.name); name.addTextChangedListener(new...更细微控制 在前面的例子中,使用RxTextView.textChanges()方法仅仅对文本改变作出响应。...让我们来看一下这个例子: 假设你想察看一个EditText输入文字时文本变化(查看指定类型数据)。...EditText原始文本类型是CharSequence,而你要获取倒序String类型文本,你可以这样: final TextView nameLabel = (TextView) findViewById

    2.9K40

    安卓入门-第三章-安卓常用控件使用方式

    那我们来看一看如何在界面上加入EditText吧,修改activity_main.xml中代码,如下所示: <EditText android:id="@+id/edit_text...这种提示功能在Android里是非常容易实现,我们甚至不需要做任何逻辑控制,因为系统已经帮我们都处理好了。...可以看到,EditText中显示了一段提示性文本,然后当我们输入任何内容时,这段文本就会自动消失。  不过,随着输入内容不断增多,EditText会被不断地拉长。...最大行数为两行,这样当输入内容超过两行时,文本就会向上滚动,而EditText则不会再继续拉伸。  ...当然,当本书后面涉及一些我们前面没学过控件和相关用法时,仍然会在相应章节做详细讲解。

    1.8K20
    领券