Android自动调整TextViews在减小字体大小之前拆分单词

时间:2017-10-27 13:43:19

标签: android textview android-support-library autosize

有没有办法避免它?

如果我的文字是" Blablabla"并且它不适合广场,我不希望有类似的东西:

Blabla- bla

我想要" Blablabla"字体较小的字体。有没有办法控制自动调整TextView是否会分割单词?

以下是该问题的一个示例:

enter image description here

最小文字大小为1sp,因此很明显这个词可以适应缩小的文字大小。

似乎有报道: https://issuetracker.google.com/issues/38468964

4 个答案:

答案 0 :(得分:3)

我过去实际上已经报告过此问题(herehere,您已经发现过),但是似乎有解决方案,或者至少看来为我工作。

我认为该提示可能会有所帮助:

enter image description here

这意味着您可以为textView选择中断策略。示例:

        <TextView
            android:layout_width="250dp" android:layout_height="wrap_content" android:background="#f00"
            android:breakStrategy="balanced" android:hyphenationFrequency="none"
            android:text="This is an example text" android:textSize="30dp" app:autoSizeTextType="uniform"/>

可悲的是,这似乎并不总是可以正常工作。我注意到,在希伯来语中,有时传播不佳:

https://issuetracker.google.com/issues/79936443

但是至少它不会无缘无故地散词。

使用此解决方案的主要缺点是,只能从API 23(根据Android dashboard statistics来看,至少有62%的设备)可用。有人要求它在支持库(here)中,但被告知这是不可能的。

答案 1 :(得分:1)

我遇到了同样的问题,发现了一个“不稳定”的工作。对我而言,它是有效的,因为我需要在textView中放入的文字只有一两个字......无论如何,我希望它有所帮助,或者至少它会给你一些灵感。 这就是我所做的:

在XML中我将android:maxLines="2"添加到AppCompatTextView。

代码中的

我检查了文本是否只有一个单词,如果是,则以编程方式设置textView.setMaxLines(1);

我理解这不是一个完美的解决方案,也不是一个通用的解决方 无论如何......如果你只需要使用android:maxLines="1"正确地缩放“Blablabla”就行了。

答案 2 :(得分:0)

我在一个按钮上遇到了类似的问题,Android将文本“阅读列表”自动文本化为两行,分别是“阅读”和“ g列表”。

我能找到的唯一成功的解决方法是用换行符(“ \ n”)替换单词之间的空格。因此,字符串资源变为:

<string name="textButtonReadingLists">Reading\nlists</string>

不太理想,但是Android将“阅读”放在一行上,并将“列表”放在它的下面。希望对别人有帮助。

答案 3 :(得分:0)

我来这里时遇到的问题是两行文字与其他文字相同。唯一对我有用的是:https://github.com/AndroidDeveloperLB/AutoFitTextView

这不像在布局中添加几行那么方便,但是它可以在Android的自动尺寸不适合的情况下使用。