gpt4 book ai didi

android - 带有 ImageSpan 的 TextView 弄乱了行高

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:19 24 4
gpt4 key购买 nike

我有一个 TextView 填充了应该包含一些 ImageSpan 对象的文本。图像可能高于正常行高,这会导致以下问题:

  • 如果图像是一行的最后一个对象,则以下行的高度是正确的
  • 如果最后一个对象不是图像,则后续行的高度设置为包含图像的行的高度

正确的情况是: enter image description here


这是错误的情况: enter image description here

更有趣的是,如果文本中有一个换行符,行高从那一点开始又是好的。

TextView 只是一个非常基本的:

<TextView
android:id="@+id/text_02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="18dp"
android:text="Text 02" />

(TextView 位于 LinearLayout 中,后者位于 ScrollView 中。)

这就是我创建跨区文本的方式:

TextView textView02 = (TextView) findViewById(R.id.text_02);

SpannableString string = new SpannableString(LOREM_IPSUM);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 102, 103, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 105, 106, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 108, 109, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView02.setText(string);

有人对此有解决方案吗?我不想重新实现 TextView 的线条绘制方法...

最佳答案

尝试为要使用 ImageSpan 显示的可绘制对象设置高度。例如像这样:

Drawable vegetary = mContext.getResources().getDrawable(R.drawable.ic_best_veget);
vegetary.setBounds(0, 0, vegetary.getIntrinsicWidth(), <yourHeight>);
ssb.setSpan(new ImageSpan(vegetary, ImageSpan.ALIGN_BASELINE), ssb.length()-1, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

关于android - 带有 ImageSpan 的 TextView 弄乱了行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com