I use new autosize feature added in support library 26. I read a documentation which can be found here : https://developer.android.com/preview/features/autosizing-textview.html
I suppose that it should work this way: You can enable auto-sizing with this attribute: app:autoSizeTextType="uniform"
. I think that TextView
should use all available space to display a whole text (not just a part - it shouldn't be cropped) and the textSize
should be as big as possible. If you need to limit a maximum or minimum size of the text then you can use these two attributes:
app:autoSizeMinTextSize="XXsp" // (you can also use px or dp values.)
or
app:autoSizeMaxTextSize="XXsp"
So far so good. Let's say that I need a TextView with 56dp width. I have texts with a different length and I want to set these texts to this TextView
. It should be automatically resized so it displays the whole text (all characters + not cropped) in the biggest possible textSize
.
This is my 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" />
Unfortunately, the text view is cropped. I wanted to set this String as a text to the TextView above: "Groupa" but this is the result:
(TextView is inside ConstraintLayout with yellow circle background.)
As you can see the textview is not resized at all. Do you have any idea what to do?
Thanks.
Additional to the other correct answers I found another point which prevents autosizing to work.
Do not use android:singleLine="true"
together with autosizing. Use the newer android:maxLines="1"
instead.