android 字符串拼接 drawable文件,【Android】android开发之文字拼接图片,图文混排...
前言
需求:给一个字符串拼接上一个"全国"标签,需要一直跟在文字后面。
ui图:
想法:
采用spannable的方法给文字后面添加图片。
正文
1.写一个xml当"全国"标签view。
//shape样式
ps:为什么要套一个LinearLayout呢?因为在spannable中添加绘制图片,不好修改其中标签的位置,故套一层ViewGroup,再在里面修改margin从而控制位置。
2.将view转换成drawable.
将view转成drawable的工具方法。
//工具类
/**
* 将view转换成Drawable
* @param view
* @return
*/
public static Drawable convertViewToDrawable(View view) {
int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
view.measure(spec, spec);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
c.translate(-view.getScrollX(), -view.getScrollY());
view.draw(c);
view.setDrawingCacheEnabled(true);
Bitmap cacheBmp = view.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);
view.destroyDrawingCache();
BitmapDrawable drawable = new BitmapDrawable(Application.getResources(), viewBmp);
cacheBmp.recycle();
return drawable;
}
3.使用ImageSpan塞入drawable.
String centerName="你需要显示的内容";
centerName += F.getInstance().getString(R.string.entire_country);//加上全国两个字,后面会被替换成图片
View globalView = LayoutInflater.from(F.getInstance().getContext()).inflate(R.layout.view_treament_center_golbal, null);
String finalCenterName = centerName;
Drawable drawable = ViewUtils.convertViewToDrawable(globalView);
SpannableStringBuilder spannableString = new SpannableStringBuilder(finalCenterName);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getMinimumHeight());//必须设置,代表drawable在canvas的draw位置
ImageSpan imageSpan = new ImageSpan(drawable);
spannableString.setSpan(imageSpan, spannableString.length() - 2, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.mTvCenterName.setText(spannableString);
这一段代码需要理解下:
1.使用LayoutInflater加载刚刚写的xml,"全国"view
View globalView = LayoutInflater.from(F.getInstance()
.getContext())
.inflate(R.layout.view_treament_center_golbal, null);
2.使用刚刚的工具将view转换成drawable,也可以叫你的ui给你切个图。
3.设置drawable绘制位置
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
Drawable的setBounds方法有四个参数,setBounds(int left, int top, int right, int bottom),这个四参数指的是drawable将在被绘制在canvas的哪个矩形区域内。
例如
@Override
protected void onDraw(Canvas canvas) {
drawable.setBounds(100, 100, 500, 500);
drawable.draw(canvas);
}
上面的代码会将drawable绘制在canvas内部(100,100,500,500)表示的矩形区内(这个矩形区域的坐标是以canvas左上角为坐标原点的)
4.通过给SpanString设置ImageSpan增加图片。
spannableString.setSpan(imageSpan, spannableString.length() - 2, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan方法:
参数1:增加的样式内容;
参数2:替换的开始位置;
参数3:替换的结束位置;
参数4:含尾不含头
参数4的枚举:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含start和end所在的端点 (a,b)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端点 (a,b]
Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含start,但不包含end所在的端点 [a,b)
Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含start和end所在的端点 [a,b]
实现效果:
相关链接
文字高亮
android 字符串拼接 drawable文件,【Android】android开发之文字拼接图片,图文混排...相关推荐
- Android中实现不同文字颜色和图文混排的Span总结
一.怎么在TextView中设置首行缩进两个字符 在string资源文件中,在文字的前面加入"\u3000\u3000"即可实现首行缩进 在Java代码中,使用setText(&q ...
- android自定义图片文本,Android 实现文字与图片的混排
在我们的项目中,常常会碰到图片与文字混排的问题.解决这类问题的方法有非常多,本文给出的方法不是唯一的.仅仅有依据实际场景才干找到更适合的方法. 本文主要通过xml布局来实现图片与文字的混排(水平排列) ...
- 【小松教你手游开发】【系统模块开发】图文混排 (在label中插入表情)
本身ngui是自带图文混排的,这个可以在ngui的Example里找到.但是为什么不能用网上已经说得很清楚,比如雨松momo的http://www.xuanyusong.com/archives/29 ...
- #Android笔记# 超级足球app 开发总结(二)—— SpannableString根据标记插入文字实现图文混排
最近利用业余时间,开发了一款基于懂球帝接口数据的足球资讯app,整体的UI也是仿照懂球帝设计的.这是一个比较综合的项目,用到了不少以前没用过的组件和api,而且产生了很多新的开发思路,有些实现方式也是 ...
- android多媒体图文混排,干货!!!Android富文本实现图文混排
效果图 rich.jpg 像图中的效果,大家在开发并不少见,大家可能不知道android提供了实现图文混排的类.大家或许会写一个布局或者使用drawableLeft这个属性实现文本的左侧图标. and ...
- Android图文混排(仿QQ空间评论)
你知道TextView中可以"塞入"图片么? 之前项目需求,做一个类似QQ的点赞评论功能,效果图如下: 本文主要讲解评论这一块,至于点赞和表情帖,后续再说. 评论功能的介绍:评论内 ...
- android:如何在TextView实现图文混排
我们通常在TextView文本中设置文字.可是如何设置图文混排呢? 我就在这里写一个例子 .我们需要用到一点简单的HTML知识 在TextView中预订了一些类似HTML的标签,通过标签可以使Text ...
- android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...
Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...
- android 实现表格横向混动_Android图文混排实现方式详解
在使用TextView的时候,我们经常需要在TextView中进行图文混排,比如在QQ中聊天的消息中的表情,底部tab图标等. 一.场景 二.实现方式 Android官方对TextView的图文混排提 ...
最新文章
- Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
- 做Java头发少_这35个Java代码优化细节,你用了吗
- JS的一些扩展:String、StringBuilder、Uri
- 1.7 Java到底有没有多维数组?
- 决策类AI成最具商业价值应用产品 第四范式入选Gartner中国5大代表厂商
- Oracle 常用sql场景应用(未完待续......)
- python3.6是用来干嘛的_学 Python 都用来干嘛的?
- oracle树结构统计,ORACLE 递归树型结构统计汇总
- ssh 配置文件中 maxsessions 与 MaxStartups
- lunux安装多个mysql_实例详解linux下多个mysql5.7.19(tar.gz)安装图文教程
- python functools
- 软件工程实践总结--个人作业
- java高级工程师认证考试_ACAA 认证Java开发工程师
- Eclipse SVN历史乱码问题
- flash 模拟eeprom
- 聊聊 iOS 出海 App 中的多语言和 ASO 优化和雷区
- 五大自动化测试 Python 框架
- 市场对计算机应用技术的需求,计算机应用技术专业人才需求调研分析
- 所有设备都不安全 只要连WiFi 就会被入侵
- 打开ftp文件发生错误,请检查是否有权限