Reputation: 361
I tried using autoSizeTextType
.
My minSdk is 24, all the tools are 26 and compat ist 26-beta2 as well.
Making them adjustable was tried through code:
dialogWeight.touchables.filterIsInstance<Button>().forEach {
TextViewCompat.setAutoSizeTextTypeWithDefaults(it,
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM) }
And xml:
<android.support.v7.widget.AppCompatTextView
android:layout_height="match_parent"
android:text="7"
android:autoSizeTextType="uniform"/>
Any ideas ? I'm starting to believe that it's currently bugged
Upvotes: 13
Views: 14491
Reputation: 5059
These days with androidx you want to use implementation "androidx.legacy:legacy-support-v4:1.0.0"
along with TewxtView and e.g. android:autoSizeTextType="uniform"
Upvotes: 0
Reputation: 988
I wanted to update this thread since android.support.v7 has been migrated to androidX
I was having problems getting the text to display at all and what fixed it for me was this note about singleLine in one of the comments:
Side note, make sure not to set android:singleLine="true", then the auto-shrink will not work.
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tempText"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:maxLines="1"
android:textColor="@color/white"
android:textSize="60dp"
app:autoSizeMinTextSize="20dp"
app:autoSizeTextType="uniform"
tools:text="99°" />
Upvotes: 4
Reputation: 4264
The key thing to understand is to use app:autoSizeTextType
, as opposed to android:autoSizeTextType
Per the documentation:
To define the default setting in XML through the support library, use the app namespace and set the autoSizeTextType attribute to none or uniform.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
app:autoSizeTextType="uniform" />
</LinearLayout>
Upvotes: 12
Reputation: 742
I solved it programmatically.
TextView number1 = findViewById(R.id.number_one);
TextViewCompat.setAutoSizeTextTypeWithDefaults(number1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
and the XML:
<TextView
android:id="@+id/number_one"
android:autoSizeTextType="uniform"
android:gravity="center"
android:text="1" />
Upvotes: 9
Reputation: 361
Okay, so the combination of settings that worked :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.AppCompatTextView
android:text="7"
app:autoSizeTextType="uniform"/>
You also need the appcompat-v7 library as a dependency in your module build.gradle file.
dependencies {
implementation 'com.android.support:appcompat-v7:27.1.1'
}
Upvotes: 19