在TextView中溢出文本

时间:2013-02-03 00:00:26

标签: java android animation textview css3

我在Android上遇到了一个相当奇怪的TextView错误。文本可以随机时间流过TextView的顶部边框,然后用户与之交互。看起来这种情况发生在TextView用动画改变它的高度时(它在点击时会扩展和缩小)。

所以这里看起来如何(用android dev工具查看边框绘图,我用红色标记了TextView的边框)http://s7.postimage.org/c1ynrbwjv/so_full.png

我尝试过调用 invalidate() postInvalidate()), requestLayout()并重置 gravity of TextView。
我还尝试重写扩展和缩小动画,使用 getLayoutParams()。height 来设置高度,而不是 setMaxHeight()
最后我将TextView放入LinearLayout(将TextView高度设置为layout_height =“wrap_content”),并扩展/缩小LinearLayout而不是TextView(因此TextView的边界不会直接更改)。但是,正如你猜测的那样,没有帮助。

TextView布局(BoardPostText扩展TextView):

<my.package.view.BoardPostText
    android:id="@+id/postText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/postTitle"
    android:clickable="true"
    android:linksClickable="true"
    android:longClickable="true"
    android:maxHeight="@dimen/post_image_max_height"
    android:paddingLeft="5dp"
    android:textColor="@color/post_data_text_color"
    android:textSize="@dimen/post_data_text_size"
    android:textColorLink="@color/post_link_color" />

TextView的代码https://gist.github.com/d47e8eafb1bcff7c8db1

1 个答案:

答案 0 :(得分:1)

我发现发生了这样的行为,然后MotionEvent发生在超链接上。因为我只需要可以点击的跨度,所以我做了这样的解决方法:

public static class JustClickableMethod extends LinkMovementMethod {

    public static MovementMethod getInstance() {
        return new JustClickableMethod();
    }

    @Override
    public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {

        int action = event.getAction() & MotionEvent.ACTION_MASK;

        if( action != MotionEvent.ACTION_UP ) {

            return true;
        }

        return super.onTouchEvent(widget, buffer, event);
    }

}

将此移动方法设置为TextView后,可点击的跨度仍会获得onClick()事件,但文本流动的错误消失。

我认为这是因为LinkMovementMethod是“遍历文本缓冲区中链接的移动方法,必要时滚动。支持单击带有DPad Center的链接或输入。”