Android开发怎么实现在TextView前面加标签
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Android开发怎么实现在TextView前面加标签",在日常操作中,相信很多人在Android开发怎么实现在TextView前面加标签问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2025年01月19日Android开发怎么实现在TextView前面加标签
这篇文章主要介绍"Android开发怎么实现在TextView前面加标签",在日常操作中,相信很多人在Android开发怎么实现在TextView前面加标签问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Android开发怎么实现在TextView前面加标签"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
效果
代码实现: 自定义TextView
public class TagTextView extends AppCompatTextView { private View view;//标签布局的最外层布局 private Context mContext; private TextView tv_tag; private StringBuffer content_buffer; //必须重写所有的构造器,否则可能会出现无法inflate布局的错误! public TagTextView(Context context) { super(context); mContext = context; } public TagTextView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } public TagTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; } public void setContentAndTag(String content, Listtags) { content_buffer = new StringBuffer(); for (String item : tags) {//将每个tag的内容添加到content后边,之后将用drawable替代这些tag所占的位置 content_buffer.append(item); } content_buffer.append(content); SpannableString spannableString = new SpannableString(content_buffer); for (int i = 0; i < tags.size(); i++) { String item = tags.get(i); View view = LayoutInflater.from(mContext).inflate(R.layout.layout_texttab, null);//R.layout.tag是每个标签的布局 tv_tag = view.findViewById(R.id.tv_tag); tv_tag.setText(item); Bitmap bitmap = convertViewToBitmap(view); Drawable d = new BitmapDrawable(bitmap); d.setBounds(0, 0, tv_tag.getWidth(), tv_tag.getHeight());//缺少这句的话,不会报错,但是图片不回显示 ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);//图片将对齐底部边线 int startIndex; int endIndex; startIndex = getLastLength(tags, i ); endIndex = startIndex + item.length(); Log.e("tag", "the start is" + startIndex + "the end is" + endIndex); spannableString.setSpan(span, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } setText(spannableString); setGravity(Gravity.CENTER_VERTICAL); } private static Bitmap convertViewToBitmap(View view) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; } private int getLastLength(List list, int maxLength) { int length = 0; for (int i = 0; i < maxLength; i++) { length += list.get(i).length(); } return length; }}
自定义一个layout_texttab布局
使用
Listtags = new ArrayList<>(); tags.add("@用户"); tags.add("@程序猿"); tags.add("@产品经理"); textTab.setContentAndTag("改个需求", tags);
到此,关于"Android开发怎么实现在TextView前面加标签"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
标签
布局
开发
学习
图片
更多
帮助
实用
接下来
产品
代码
位置
内容
外层
底部
效果
文章
方法
理论
用户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
杭州币猫网络技术官网
百度盘古网络技术有限公司
二级数据库技术都考啥
sw主数据库由于
星际战甲怎么进入数据库
网络安全党课讲稿
织梦二个站一个数据库
网络安全模式如何开启
球球大作战为什么服务器没反应
鹰潭高性价比服务器哪里好
移动手机和电脑服务器一样吗
scheme 数据库
山西通讯软件开发设施参考价格
软件开发华涛
网络安全书面检查
威力网络技术欢迎选购
梦幻西游转回原服务器怎么操作
前段程序如何连接后台数据库
属于原始数据库
电影服务器最大连接数是什么意思
锦江区杨飞软件开发工作室
蝙蝠侠服务器
美国服务器cn2回国线路
intouch没有数据库
网络安全的漏洞是不可避免的
手机network软件开发
心电图编码数据库
属于原始数据库
时间核对数据库
互联网与科技