我有一个TextView,我想实现这个椭圆效应:

以下是我的XML布局:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:textSize="16sp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:textColor="@color/white"
android:ellipsize="end"
android:maxLines="2"
/>我的代码:
val drawable = ContextCompat.getDrawable(requireSceneContext() , R.drawable.playing_com_into)!!
drawable.setBounds(0, 0 , dp2px(10) , dp2px(10))
val text = "电影《We are all human》主题曲,电影《We are all human》主题曲,电影《We are all human》主题曲,电影《We are all human》主题曲,电影《We are all human》主题曲,电影《We are all human》主题曲"
val span = QMUIAlignMiddleImageSpan(drawable , ALIGN_MIDDLE , -1f)
val spannableString = SpannableString(text)
spannableString.setSpan(span , text.length -2 , text.length , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE )
binding.tv1.text = spannableString电流效应
我现在要说的是:

我想要TextView优先级显示ImageSpan,在计算文本宽度之后
发布于 2021-03-01 03:06:47
我没有找到一种自定义TextView内部布局的方法。我在两行情况下计算了文本的长度,然后减去一个字符的长度,然后设置文本和ImageSpan。
这是我的密码
TextPaint paint = songDetailTv.getPaint();
int textViewWidth = (int) (container.getResources().getDisplayMetrics().widthPixels
- (2 * Resource.getDimension(R.dimen.player_recommend_margin_horizontal))
- (2 * Resource.getDimension(R.dimen.player_recommend_root_view_margin)));
int bufferWidth = (int) paint.getTextSize();
int textLength = textViewWidth * 2 - bufferWidth;
paint.setTextSize(songDetailTv.getTextSize());
CharSequence temp = TextUtils.ellipsize(detail.podcastIntro, paint, textLength * 1f, TextUtils.TruncateAt.END);
boolean isEllipsize = temp == detail.podcastIntro;
if (!isEllipsize) {
songDetailTv.setText(SpannableHelper.getPicAtEnd(R.drawable.playing_com_into, temp, -1));
} else {
songDetailTv.setText(detail.podcastIntro);
}我是xml,maxline=2
<TextView
android:id="@+id/tv_song_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_song_publish_time"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="2"
android:textColor="#98999a"
android:textSize="12dp"
android:visibility="gone"
android:layout_marginTop="15dp"
tool:text="歌曲详情"
tool:visibility="visible" />这是电流效应电流效应
我不知道为什么有时计算不那么准确。这可能与TextView的布局有关。但能容忍
发布于 2021-03-05 11:30:13
https://stackoverflow.com/questions/66100771
复制相似问题