作者:凡秘能 | 来源:互联网 | 2023-02-03 11:56
我在支持库26中添加了新的自动调整功能.我阅读了一个文档,可以在这里找到:https:
//developer.android.com/preview/features/autosizing-textview.html
我认为它应该以这种方式工作:您可以使用以下属性启用自动调整大小:app:autoSizeTextType="uniform"
.我认为TextView
应该使用所有可用空间来显示整个文本(不仅仅是一个部分 - 它不应该被裁剪)并且textSize
应该尽可能大.如果您需要限制文本的最大或最小大小,则可以使用以下两个属性:
app:autoSizeMinTextSize="XXsp" // (you can also use px or dp values.)
要么
app:autoSizeMaxTextSize="XXsp"
到现在为止还挺好.假设我需要一个宽度为56dp的TextView.我有不同长度的文本,我想将这些文本设置为此TextView
.它应该自动调整大小,以便尽可能显示整个文本(所有字符+未裁剪)textSize
.
这是我的TextView:
不幸的是,文本视图被裁剪.我想将此String设置为上面TextView的文本:"Groupa"但结果如下:
![在此输入图像描述](https://img.php1.cn/3cd4a/94ce/a6e/865776f6fe3d5f59.jpeg)
(TextView位于ConstraintLayout内部,带有黄色圆圈背景.)
如您所见,textview根本没有调整大小.你知道该怎么办吗?
谢谢.
1> Henning..:
除了其他正确的答案,我发现另一点阻止自动调整工作.
不要android:singleLine="true"
与自动调整一起使用.请改用较新的android:maxLines="1"
.
2> Sira Lam..:
我已经针对一些情况对此进行了测试,得出以下结论:
你必须有有限的宽度和高度.例如,如果你设置宽度为match_parent
,但wrap_content
对于高度,我认为Android不知道你想有多高伸展你的文字.在你的例子中,你没有特定的高度,所以我认为这就是为什么它不起作用.
例如:
![包装文本的内容高度](https://img.php1.cn/3cd4a/1eebe/cd5/67cc2e96eddffff8.png)
![文本的特定高度](https://img.php1.cn/3cd4a/1eebe/cd5/bcafc120671304eb.webp)
我不知道为什么Android官方文档会使用wrap_content作为例子......
正如您所看到的,我在示例中没有使用其他属性,因此可能不是属性不正确的问题.
而且,是的,我使用的TextView是android.support.v7.widget.AppCompatTextView.
只要您使用支持库26.0.0或更高版本就足够了.
编辑:
至于ConstraintLayout
,校长是一样的.您应该同时具有有界宽度和高度,这意味着每个维度的下方之一:
您已为该尺寸(宽度或高度)指定了绝对值
您已将Constraint设置为两个方向
例如:
![宽度设置为绝对值](https://img.php1.cn/3cd4a/1eebe/cd5/b428d8f746fb8d47.webp)
更新:(2017-09-21)
我测试过,遗憾的是它似乎还不支持自定义字体,这是一个在支持库v26中一起发布的函数...
我之前做过一个自定义的文本视图,它扩展了AppCompatTextView.这与自动调整功能相得益彰.因此,如果您需要使用自动调整大小的自定义字体,您可以尝试一下.(类似于[here](/sf/ask/17360801/),但扩展AppCompatTextView而不仅仅是普通的TextView
3> 小智..:
我遇到过同样的问题.我解决它在我的gradle这个改变两行:
compile 'com.android.support:support-v4:26.0.1'
与
compile 'com.android.support:appcompat-v7:26.0.1'
要适合你的需要添加所有四个选项,这样较长的文本:
@npace只有在针对api 26及更高版本时才会出现这种情况.使用`TextView`时会出现"意外的命名空间前缀"警告
4> John Le..:
您设置为android:layout_height属性的值是多少?
从文档中:" 如果在XML文件中设置自动调整大小,建议不要将值"wrap_content"用于TextView的layout_width或layout_height属性.这可能会产生意外结果. "
5> 0101100101..:
在我的情况下,一个非常愚蠢的问题是:虽然自动调整对我来说总是可以正常工作,但在一个TextView上,我恰好使用了android:
名称空间而不是app:
!我完全忘记了自己的错误,并一直想知道为什么它不起作用。因此,使用AppCompat
主题时,请务必确保使用AppCompat
属性,而不是本机属性。