ExpandableTextViewExample icon indicating copy to clipboard operation
ExpandableTextViewExample copied to clipboard

收起省略号没了

Open zhpanvip opened this issue 8 years ago • 5 comments

展开再收起后省略号没了?

zhpanvip avatar Dec 19 '16 01:12 zhpanvip

对,折叠状态时没有省略号,求解决方案

PiYun01 avatar Dec 28 '16 12:12 PiYun01

设置一个String str_text,在setText方法中进行赋值。

点击时 if (mCollapsed) {//收缩 mTvContent.setMaxLines(mMaxCollapsedLines); valueAnimator = new ValueAnimator().ofInt(getHeight(), mCollapsedHeight); int lineEndIndex = mTvContent.getLayout().getLineEnd(mMaxCollapsedLines-1);//获取被截断的字符长度 String text = str_text.subSequence(0, lineEndIndex-1) + "...";//手动加上省略号 mTvContent.setText(text); } else {//展开 valueAnimator = new ValueAnimator().ofInt(getHeight(), getHeight() + mTextHeightWithMaxLines - mTvContent.getHeight()); mTvContent.setText(str_text); }

xue12311 avatar May 02 '17 06:05 xue12311

在xue12311的方案上稍微修改了下 修改OnClick方法里的代码

  1.  if (mCollapsed) {
         valueAnimator = new ValueAnimator().ofInt(getHeight(), mCollapsedHeight);
     } else {
         valueAnimator = new ValueAnimator().ofInt(getHeight(), getHeight() +
                 mTextHeightWithMaxLines - mTvContent.getHeight());
     }
    

2.valueAnimator.addListener的回调里

       @Override
        public void onAnimationStart(Animator animator) {
            if (!mCollapsed) {
                mTvContent.setText(str_text);
            }
        }

        @Override
        public void onAnimationEnd(Animator animator) {
            // 动画结束后发送结束的信号
            /// clear the animation flag
            if (mCollapsed) {
                int lineEndIndex = mTvContent.getLayout().getLineEnd(mMaxCollapsedLines - 1);//获取被截断的字符长度
                String text = str_text.subSequence(0, lineEndIndex - 1) + "...";//手动加上省略号
                mTvContent.setText(text);
            }
            mAnimating = false;
            // notify the listener
            if (mListener != null) {
                mListener.onExpandStateChanged(mTvContent, !mCollapsed);
            }
        }

这样动画会和之前一样连贯,不会文字突变

shirongmiao avatar Jul 19 '17 06:07 shirongmiao

牛逼~

dicallc avatar Aug 27 '18 07:08 dicallc

收起来加省略号其实还有一个更简单的办法:以上的方法会使文字排版改变 mTv.setMaxLines(mMaxCollapsedLines); mTv.setEllipsize(TextUtils.TruncateAt.END); TextView 应该这么写

<TextView
      android:id="@+id/expandable_text"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:lineSpacingExtra="5dp"
      android:ellipsize="end"
      android:text=""
      android:textColor="@color/white"
      android:textSize="14sp"
      />

dicallc avatar Aug 28 '18 02:08 dicallc