Jos*_*ška 41 android autosize textview android-support-library android-8.0-oreo
我在支持库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.)
Run Code Online (Sandbox Code Playgroud)
要么
app:autoSizeMaxTextSize="XXsp"
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.假设我需要一个宽度为56dp的TextView.我有不同长度的文本,我想将这些文本设置为此TextView.它应该自动调整大小,以便尽可能显示整个文本(所有字符+未裁剪)textSize.
这是我的TextView:
<android.support.v7.widget.AppCompatTextView
android:id="@+id/vName"
style="@style/TextView.AutoSize"
android:layout_width="56dp"
android:gravity="bottom|center_horizontal"
android:maxLines="1"
app:autoSizeMinTextSize="1px"
app:autoSizeTextType="uniform"
app:layout_constraintBottom_toTopOf="@id/vGuideline"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
Run Code Online (Sandbox Code Playgroud)
不幸的是,文本视图被裁剪.我想将此String设置为上面TextView的文本:"Groupa"但结果如下:

(TextView位于ConstraintLayout内部,带有黄色圆圈背景.)
如您所见,textview根本没有调整大小.你知道该怎么办吗?
谢谢.
Hen*_*ing 42
除了其他正确的答案,我发现另一点阻止自动调整工作.
不要android:singleLine="true"与自动调整一起使用.请改用较新的android:maxLines="1".
Sir*_*Lam 40
我已经针对一些情况对此进行了测试,得出以下结论:
你必须有有限的宽度和高度.例如,如果你设置宽度为match_parent,但wrap_content对于高度,我认为Android不知道你想有多高伸展你的文字.在你的例子中,你没有特定的高度,所以我认为这就是为什么它不起作用.
例如:


我不知道为什么Android官方文档会使用wrap_content作为例子......
正如您所看到的,我在示例中没有使用其他属性,因此可能不是属性不正确的问题.
而且,是的,我使用的TextView是android.support.v7.widget.AppCompatTextView.
只要您使用支持库26.0.0或更高版本就足够了.
编辑:
至于ConstraintLayout,校长是一样的.您应该同时具有有界宽度和高度,这意味着每个维度的下方之一:
您已为该尺寸(宽度或高度)指定了绝对值
您已将Constraint设置为两个方向
例如:

更新:(2017-09-21)
我测试过,遗憾的是它似乎还不支持自定义字体,这是一个在支持库v26中一起发布的函数...
小智 9
我遇到过同样的问题.我解决它在我的gradle这个改变两行:
compile 'com.android.support:support-v4:26.0.1'与
compile 'com.android.support:appcompat-v7:26.0.1'
要适合你的需要添加所有四个选项,这样较长的文本:
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/your_string"
app:autoSizeTextType="uniform"
app:autoSizeMaxTextSize="13sp"
app:autoSizeMinTextSize="5sp"
app:autoSizeStepGranularity="1sp"/>
Run Code Online (Sandbox Code Playgroud)
小智 6
@Sira Lam 接受的答案的附加信息:
始终确保您不会继承可能与 AutoTextSize 的行为发生冲突的属性,尤其是android:singleLine.
即使android:maxLines或android:lines 不相应地阻止TextView调整大小,该singleLine属性(设置为 true 时)也会完全禁用任何自动调整大小。
因此,在追踪 AutoTextSize 问题时,首先尝试搜索该singleLine属性,因为它有时在扩展Button.
确保检查这些选项以便autoSize工作:
wrap_content在任何维度中使用(例如layout_width和layout_height)singleLine,而是使用android:maxLinesapp:autosizexxx而不是android:autosizexxx为了支持旧的 Android 版本AppCompatTextView,TextView因此您无需更改视图在我的情况下,一个非常愚蠢的问题是:虽然自动调整对我来说总是可以正常工作,但在一个TextView上,我恰好使用了android:名称空间而不是app:!我完全忘记了自己的错误,并一直想知道为什么它不起作用。因此,使用AppCompat主题时,请务必确保使用AppCompat属性,而不是本机属性。
| 归档时间: |
|
| 查看次数: |
20956 次 |
| 最近记录: |