重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言
成都创新互联公司是一家集网站建设,道外企业网站建设,道外品牌网站建设,网站定制,道外网站建设报价,网络营销,网络优化,道外网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。最近在项目中需要在某个多行英文文本末尾增加一个图片,尝试了很多方法,最后用了一个比较Tricky的方法解决了,当然这种方法不一定是最好最优的解决办法,记录一下。
问题
如果直接使用drawableRight或者drawableEnd来将图片放置到文本末尾,结果会是这样:
图片会在TextView右边竖直方向的中间位置显示,而不是我们期望的在最后一行位置显示。
这时我们可以尝试使用ImageSpan来将图片放置在最后一行:
final TextView text = findViewById(R.id.text); final String string = "dkffkdjkfjdkfjkdjfdjfkjdkfjkdjkdjfkjdkjk"; //创建一个SpannableString对象,后面增加空格是预留给图片的 SpannableString spannableString = new SpannableString(string + " "); //创建图片的Drawable对象 Drawable drawable = getResources().getDrawable(R.mipmap.copy); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //创建图片的ImageSpan对象 ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); //设置ImageSpan,将其位置设置在spannableString最后面,起始位置start=spannableString.length() - 1,结束位置为end=spannableString.length(), // SPAN_INCLUSIVE_EXCLUSIVE表示包含start不包含end spannableString.setSpan(imageSpan, spannableString.length() - 1, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); text.setText(spannableString);