首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为MaxLines和椭圆大小设置动画

为MaxLines和椭圆大小设置动画
EN

Stack Overflow用户
提问于 2013-06-13 16:15:40
回答 2查看 8.3K关注 0票数 22

我有一个文本视图,它包含文本的一部分。当用户单击箭头时,文本视图将调整大小,以便显示全文。示例见下图:

TextView的高度为wrap_content,折叠时的高度为maxLines="4“。

箭头的onClick包含以下代码:

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

此代码可以工作,但它不是动画。我需要动画的扩展,这样TextView动画到它的完全高度。我找不到任何像MaxLines这样的动画属性。谁能帮帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-16 16:01:55

您可以使用ObjectAnimator实现这一点

代码语言:javascript
复制
ObjectAnimator animation = ObjectAnimator.ofInt(
        tvText,
        "maxLines", 
        25);
animation.setDuration(4000);
animation.start();

这将在4000毫秒的时间内将"tvText“TextView的"maxLines”属性从最初设置的值增加到25。

查看更多herehere

票数 64
EN

Stack Overflow用户

发布于 2014-12-11 21:08:45

虽然动画maxLines工作,但结果是有点起伏,因为您的视图高度跳跃很多。

代码语言:javascript
复制
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高度的动画。编辑:当TextView不能垂直地适应它的内容时,它会滚动,你需要解决办法。setMovementMethod(null)会禁用滚动,但也会禁用链接点击。因为安卓。

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

https://stackoverflow.com/questions/17082322

复制
相关文章

相似问题

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