gpt4 book ai didi

java - android TextView中的文本溢出

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:16 24 4
gpt4 key购买 nike

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

这是它的外观(使用 android 开发工具启用了 View 边框绘制,我用红色标记了 TextView 的边框)http://s7.postimage.org/c1ynrbwjv/so_full.png

我试过调用invalidate()(postInvalidate())、requestLayout() 和重置gravity 的 TextView。
我还尝试重写扩展和收缩动画,使用 getLayoutParams().height 来设置高度,而不是 setMaxHeight()
最后,我将 TextView 放入 LinearLayout(将 TextView 高度设置为 layout_height="wrap_content"),并扩展/收缩 LinearLayout 而不是 TextView(因此 TextView 的边界不会直接改变)。但是,您可以猜到,这并没有帮助。

TextView 布局(BoardPostText extends 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

最佳答案

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

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 或 Enter 单击链接。”

关于java - android TextView中的文本溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com