animationMaxLines和Ellipsize

我有textview包含文本的一部分。 当用户单击箭头时,textview会resize,以显示全文。 以下图片为例子: 倒塌

扩大

TextView有一个wrap_content高度,当一个maxLines =“4”折叠时。

箭头的onClick包含以下代码:

if (isExpanded) { btnToggle.setImageDrawable(getResources().getDrawable( R.drawable.arrow_down)); tvText.setMaxLines(4); tvText.setEllipsize(TruncateAt.END); } else { btnToggle.setImageDrawable(getResources().getDrawable( R.drawable.arrow_up)); tvText.setMaxLines(Integer.MAX_VALUE); tvText.setEllipsize(null); } isExpanded = !isExpanded; 

此代码有效,但不是animation。 我需要animation的扩展,所以TextViewanimation到它的全高。 我找不到像MaxLines这样的animation属性。 谁能帮助我?

Solutions Collecting From Web of "animationMaxLines和Ellipsize"

您可以使用ObjectAnimator来实现这ObjectAnimator

 ObjectAnimator animation = ObjectAnimator.ofInt( tvText, "maxLines", 25); animation.setDuration(4000); animation.start(); 

这会将“tvText”TextView的“maxLines”属性从最初设置为的最大值增加到25,超过4000毫秒。

看更多这里和这里 。

虽然animationmaxLines作品,结果是有点波涛汹涌,因为你的视图高度跳了很多。

 int startHeight = content.getMeasuredHeight(); content.setMaxLines(Integer.MAX_VALUE); content.measure( View.MeasureSpec.makeMeasureSpec(parent.getWidth(), View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); int endHeight = content.getMeasuredHeight(); 

content是一个maxLines设置为2的TextView 。现在你可以改变TextView高度的animation。 编辑:当TextView无法垂直放置内容时,会滚动,您需要解决方法。 setMovementMethod(null)禁用滚动,但也禁用链接点击。 因为Android。

被接受的答案是根本错误的,因为它强制使用相同的值多次调用TextView.setMaxLines() ,没有任何理由,导致生成的animation不稳定。

你可以用一个简单的ValueAnimator和lastValue标志来代替:

  ValueAnimator animator = ValueAnimator.ofInt(fromThisLineCount, toThisLineCount).setDuration(250); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { int lastValue = -1; @Override public void onAnimationUpdate(ValueAnimator animation) { int value = (int) animation.getAnimatedValue(); if (value == lastValue) { return; } lastValue = value; yourTextView.setMaxLines(value); } }); animator.start(); 

请记住,animation每次添加/删除整行1行,所以如果animation持续时间过长或影响到几行,它可能仍然看起来不平坦。 最好的方法是创build一个自定义的视图,并做适当的测量onMeasure (见例如https://github.com/Manabu-GT/ExpandableTextView )。