相关疑难解决方法(0)

不要在缩写的句点中包装Android TextView中的文本

有没有办法控制TextView选择包装文本的位置?我遇到的问题是它想要在句点换行 - 所以像"在美国和加拿大可用"之类的字符串可以在U和S之间的时段之后换行.是否有办法告诉TextView不要除非有一个句​​号和一个空格,或者一些程序化的方法来控制包装,否则包装?

android word-wrap textview

8
推荐指数
1
解决办法
3448
查看次数

防止Android的TextView破坏链接

这个问题可能是一样的这一个,但因为没有它的答案真正解决问题,我再问一遍.

我的应用程序有一个TextView,偶尔会显示很长的URL.出于美观原因(并且由于URL不包含空格),理想的行为是在跳到下一行之前完全填充每一行,如下所示:

|http://www.domain.com/som|
|ething/otherthing/foobar/|
|helloworld               |
Run Code Online (Sandbox Code Playgroud)

相反,会在URL附近破坏URL,就好像它们是空格一样.

|http://www.domain.com/   |
|something/otherthing/    |
|foobar/helloworld        |
Run Code Online (Sandbox Code Playgroud)

我尝试扩展TextView类并添加一个breakManually方法的修改版本(在这里找到)来欺骗TextView并做我需要的东西,在onSizeChanged(覆盖)上调用它.除了TextView在ListView中之外,它工作正常.当滚动隐藏此自定义TextView并将其恢复时,其内容将返回到原始中断行为,因为在不调用onSizeChanged的情况下重新绘制视图.

通过在onDraw中调用breakManually,我能够解决这个问题.这在任何时候都呈现出预期的行为,但是性能成本很高:因为只要滚动ListView并且breakManually方法不是"轻量级" 就会调用onDraw,即使在高端四边形上,滚动也会出现难以接受的延迟 - 核心设备.

下一步是爬行TextView源代码,试图找出它在何处以及如何分割文本,并希望覆盖它.这完全失败了.我(一个新手)花了一整天的时间毫无结果地看着我大多无法理解的代码.

这就把我带到了这里.有人可以指出我应该覆盖的正确方向(假设它是可能的)?或者也许有一种更简单的方式来实现我想要的东西?

这是我提到的breakManually方法.由于使用了getWidth(),它仅在测量视图后调用时才有效.

private CharSequence breakManually (CharSequence text) {
        int width = getWidth() - getPaddingLeft() - getPaddingRight();
        // Can't break with a width of 0.
        if (width == 0) return text;
        Editable editable = new SpannableStringBuilder(text); …
Run Code Online (Sandbox Code Playgroud)

android word-wrap textview

6
推荐指数
1
解决办法
812
查看次数

标签 统计

android ×2

textview ×2

word-wrap ×2