首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置ImageSpan和省略号时,希望看到...and ImageSpan all display

设置ImageSpan和省略号时,希望看到...and ImageSpan all display
EN

Stack Overflow用户
提问于 2021-02-08 11:29:49
回答 2查看 231关注 0票数 0

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

以下是我的XML布局:

代码语言:javascript
复制
<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"
        />

我的代码:

代码语言:javascript
复制
        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,在计算文本宽度之后

EN

回答 2

Stack Overflow用户

发布于 2021-03-01 03:06:47

我没有找到一种自定义TextView内部布局的方法。我在两行情况下计算了文本的长度,然后减去一个字符的长度,然后设置文本和ImageSpan。

这是我的密码

代码语言:javascript
复制
                    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

代码语言:javascript
复制
<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的布局有关。但能容忍

票数 0
EN

Stack Overflow用户

发布于 2021-03-05 11:30:13

由于公司的业务,除了需要添加图像,它还需要保留一些特殊的文本,所以我定制了一个TextView来完成这个效果的这是代码链接github

这是电流效应

电流效应

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66100771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档