我使用的是支持库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:
<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" />
不幸的是,文本视图被裁剪了。我想将此字符串设置为上述TextView的文本:"Groupa“,但结果如下:
(TextView位于ConstraintLayout内部,背景为黄色圆圈。)
正如您所看到的,文本视图根本没有调整大小。你知道该怎么做吗?
谢谢。
发布于 2018-02-12 21:38:17
除了其他正确的答案之外,我还发现了另一个阻止自动调整大小的问题。
请勿将android:singleLine="true"
与自动调整大小一起使用。请改用较新的android:maxLines="1"
。
发布于 2017-08-09 22:42:55
我也有同样的问题。我通过修改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"/>
发布于 2018-02-15 08:24:25
在我的例子中,有一些非常愚蠢的问题:虽然自动调整大小对我来说总是很好,但在恰好有一个TextView上,我使用了android:
名称空间而不是app:
!我完全忘记了我的错误,一直在想为什么它不起作用。因此,在使用AppCompat
主题时,请始终确保使用AppCompat
属性,而不是本机属性。
https://stackoverflow.com/questions/44118002
复制相似问题