189208232f3b5d1451408d787872504a190bc7ee0Chris Banes/* 22cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes * Copyright (C) 2015 The Android Open Source Project 389208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 589208232f3b5d1451408d787872504a190bc7ee0Chris Banes * you may not use this file except in compliance with the License. 689208232f3b5d1451408d787872504a190bc7ee0Chris Banes * You may obtain a copy of the License at 789208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 889208232f3b5d1451408d787872504a190bc7ee0Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 989208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 1089208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Unless required by applicable law or agreed to in writing, software 1189208232f3b5d1451408d787872504a190bc7ee0Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 1289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389208232f3b5d1451408d787872504a190bc7ee0Chris Banes * See the License for the specific language governing permissions and 1489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * limitations under the License. 1589208232f3b5d1451408d787872504a190bc7ee0Chris Banes */ 1689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 172cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banespackage android.support.v7.widget; 1889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 198e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikasimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 208e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas 2189208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.Context; 2252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.content.res.ColorStateList; 2352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.graphics.PorterDuff; 2452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.graphics.drawable.Drawable; 2552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.support.annotation.DrawableRes; 26cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanuimport android.support.annotation.NonNull; 2752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.support.annotation.Nullable; 28c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 29e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanuimport android.support.v4.os.BuildCompat; 3052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banesimport android.support.v4.view.TintableBackgroundView; 31cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanuimport android.support.v4.widget.AutoSizeableTextView; 32cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanuimport android.support.v4.widget.TextViewCompat; 3389208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.support.v7.appcompat.R; 3489208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.util.AttributeSet; 3589208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.widget.TextView; 3689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 3789208232f3b5d1451408d787872504a190bc7ee0Chris Banes/** 38091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * A {@link TextView} which supports compatible features on older version of the platform, 39091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * including: 40091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * <ul> 41091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * <li>Supports {@link R.attr#textAllCaps} style attribute which works back to 4264dbe1d454f1190b3cd8426d09b9119949a10709Kirill Grouchnikov * {@link android.os.Build.VERSION_CODES#GINGERBREAD Gingerbread}.</li> 4329def828b59307ae6bfec1e5da8c44b7e651ddcfKirill Grouchnikov * <li>Allows dynamic tint of its background via the background tint methods in 4452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link android.support.v4.view.ViewCompat}.</li> 4552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * <li>Allows setting of the background tint using {@link R.attr#backgroundTint} and 4652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link R.attr#backgroundTintMode}.</li> 479143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * <li>Supports auto-sizing via {@link android.support.v4.widget.TextViewCompat} by allowing 489143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * to instruct a {@link TextView} to let the size of the text expand or contract automatically 499143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * to fill its layout based on the TextView's characteristics and boundaries. The 509143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * style attributes associated with auto-sizing are {@link R.attr#autoSizeTextType}, 519143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * {@link R.attr#autoSizeMinTextSize}, {@link R.attr#autoSizeMaxTextSize}, 529143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * {@link R.attr#autoSizeStepGranularity} and {@link R.attr#autoSizePresetSizes}, all of 539143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * which work back to 549143d7d1813d0db1d8a62a68bcf8d633aa9f60fcAndrei Stingaceanu * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH Ice Cream Sandwich}.</li> 55091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * </ul> 56091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * 57091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * <p>This will automatically be used when you use {@link TextView} in your layouts. 58091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * You should only need to manually use this class when writing custom views.</p> 5989208232f3b5d1451408d787872504a190bc7ee0Chris Banes */ 60cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanupublic class AppCompatTextView extends TextView implements TintableBackgroundView, 61cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu AutoSizeableTextView { 6241ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu 6329def828b59307ae6bfec1e5da8c44b7e651ddcfKirill Grouchnikov private final AppCompatBackgroundHelper mBackgroundTintHelper; 6429def828b59307ae6bfec1e5da8c44b7e651ddcfKirill Grouchnikov private final AppCompatTextHelper mTextHelper; 65091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 662cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public AppCompatTextView(Context context) { 6789208232f3b5d1451408d787872504a190bc7ee0Chris Banes this(context, null); 6889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 6989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 702cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public AppCompatTextView(Context context, AttributeSet attrs) { 71e120656eaf98961d4550f6e4e970812839887b26Chris Banes this(context, attrs, android.R.attr.textViewStyle); 7289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 7389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 74091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes public AppCompatTextView(Context context, AttributeSet attrs, int defStyleAttr) { 75e4beadba70aecabbd7f6677943ab7c0b94809b8aChris Banes super(TintContextWrapper.wrap(context), attrs, defStyleAttr); 76320c3e9fe1e100a5a7cda5dd217d2d1152d08b3fChris Banes 774c99f0e29b0926d8e5de44b7e3980d47f052f04cChris Banes mBackgroundTintHelper = new AppCompatBackgroundHelper(this); 7852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.loadFromAttributes(attrs, defStyleAttr); 7952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 80f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes mTextHelper = AppCompatTextHelper.create(this); 81091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mTextHelper.loadFromAttributes(attrs, defStyleAttr); 82f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes mTextHelper.applyCompoundDrawablesTints(); 83320c3e9fe1e100a5a7cda5dd217d2d1152d08b3fChris Banes } 84320c3e9fe1e100a5a7cda5dd217d2d1152d08b3fChris Banes 85320c3e9fe1e100a5a7cda5dd217d2d1152d08b3fChris Banes @Override 8652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public void setBackgroundResource(@DrawableRes int resId) { 8752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes super.setBackgroundResource(resId); 8852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes if (mBackgroundTintHelper != null) { 8952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.onSetBackgroundResource(resId); 9052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 9152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 9252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 9352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 9452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public void setBackgroundDrawable(Drawable background) { 9552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes super.setBackgroundDrawable(background); 9652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes if (mBackgroundTintHelper != null) { 9752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.onSetBackgroundDrawable(background); 9852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 9952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 10052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 10152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes /** 10252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * This should be accessed via 10352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link android.support.v4.view.ViewCompat#setBackgroundTintList(android.view.View, ColorStateList)} 10452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * 10552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * @hide 10652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes */ 1078e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas @RestrictTo(LIBRARY_GROUP) 10852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 10952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public void setSupportBackgroundTintList(@Nullable ColorStateList tint) { 11052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes if (mBackgroundTintHelper != null) { 11152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.setSupportBackgroundTintList(tint); 11252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 11352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 11452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 11552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes /** 11652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * This should be accessed via 11752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link android.support.v4.view.ViewCompat#getBackgroundTintList(android.view.View)} 11852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * 11952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * @hide 12052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes */ 1218e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas @RestrictTo(LIBRARY_GROUP) 12252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 12352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Nullable 12452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public ColorStateList getSupportBackgroundTintList() { 12552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes return mBackgroundTintHelper != null 12652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes ? mBackgroundTintHelper.getSupportBackgroundTintList() : null; 12752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 12852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 12952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes /** 13052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * This should be accessed via 13152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link android.support.v4.view.ViewCompat#setBackgroundTintMode(android.view.View, PorterDuff.Mode)} 13252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * 13352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * @hide 13452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes */ 1358e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas @RestrictTo(LIBRARY_GROUP) 13652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 13752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public void setSupportBackgroundTintMode(@Nullable PorterDuff.Mode tintMode) { 13852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes if (mBackgroundTintHelper != null) { 13952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.setSupportBackgroundTintMode(tintMode); 14052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 14152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 14252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 14352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes /** 14452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * This should be accessed via 14552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * {@link android.support.v4.view.ViewCompat#getBackgroundTintMode(android.view.View)} 14652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * 14752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes * @hide 14852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes */ 1498e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas @RestrictTo(LIBRARY_GROUP) 15052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 15152a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Nullable 15252a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes public PorterDuff.Mode getSupportBackgroundTintMode() { 15352a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes return mBackgroundTintHelper != null 15452a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes ? mBackgroundTintHelper.getSupportBackgroundTintMode() : null; 15552a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 15652a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes 15752a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes @Override 1582cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public void setTextAppearance(Context context, int resId) { 1592cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes super.setTextAppearance(context, resId); 160091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (mTextHelper != null) { 161091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mTextHelper.onSetTextAppearance(context, resId); 16289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 16389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 164f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes 165f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes @Override 166f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes protected void drawableStateChanged() { 167f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes super.drawableStateChanged(); 16852a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes if (mBackgroundTintHelper != null) { 16952a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes mBackgroundTintHelper.applySupportBackgroundTint(); 17052a2fcaedc37de7e6c243a860ffd8d17b648f972Chris Banes } 171f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes if (mTextHelper != null) { 172f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes mTextHelper.applyCompoundDrawablesTints(); 173f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes } 174f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes } 17541ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu 17641ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu @Override 17741ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 17841ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu super.onLayout(changed, left, top, right, bottom); 17941ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu if (mTextHelper != null) { 18041ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu mTextHelper.onLayout(changed, left, top, right, bottom); 18141ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu } 18241ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu } 18341ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu 18441ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu @Override 18541ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu public void setTextSize(int unit, float size) { 186e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 18741ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu super.setTextSize(unit, size); 188e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 189e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 190e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu mTextHelper.setTextSize(unit, size); 191e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 19241ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu } 19341ce347ead8295377dc22960102efb6bbaf80afcAndrei Stingaceanu } 194cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 195cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 196cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 197cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#setAutoSizeTextTypeWithDefaults( 198cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * TextView, int)} 199cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 200cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 201cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 202cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 203cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 204cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public void setAutoSizeTextTypeWithDefaults( 205cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @TextViewCompat.AutoSizeTextType int autoSizeTextType) { 206e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 207e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu super.setAutoSizeTextTypeWithDefaults(autoSizeTextType); 208e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 209e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 210e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu mTextHelper.setAutoSizeTextTypeWithDefaults(autoSizeTextType); 211e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 212cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 213cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 214cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 215cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 216cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 217cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#setAutoSizeTextTypeUniformWithConfiguration( 218cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * TextView, int, int, int, int)} 219cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 220cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 221cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 222cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 223cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 224cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public void setAutoSizeTextTypeUniformWithConfiguration( 225cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu int autoSizeMinTextSize, 226cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu int autoSizeMaxTextSize, 227cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu int autoSizeStepGranularity, 228cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu int unit) throws IllegalArgumentException { 229e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 230e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu super.setAutoSizeTextTypeUniformWithConfiguration( 231cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu autoSizeMinTextSize, autoSizeMaxTextSize, autoSizeStepGranularity, unit); 232e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 233e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 234e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu mTextHelper.setAutoSizeTextTypeUniformWithConfiguration( 235e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu autoSizeMinTextSize, autoSizeMaxTextSize, autoSizeStepGranularity, unit); 236e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 237cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 238cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 239cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 240cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 241cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 242cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#setAutoSizeTextTypeUniformWithPresetSizes( 243cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * TextView, int[], int)} 244cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 245cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 246cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 247cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 248cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 249cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[] presetSizes, int unit) 250cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu throws IllegalArgumentException { 251e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 252e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu super.setAutoSizeTextTypeUniformWithPresetSizes(presetSizes, unit); 253e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 254e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 255e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu mTextHelper.setAutoSizeTextTypeUniformWithPresetSizes(presetSizes, unit); 256e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 257cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 258cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 259cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 260cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 261cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 262cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#getAutoSizeTextType(TextView)} 263cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 264cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 265cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 266cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 267cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 268cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @TextViewCompat.AutoSizeTextType 269cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public int getAutoSizeTextType() { 270e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 271e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return super.getAutoSizeTextType() == TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM 272e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu ? TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM 273e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu : TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE; 274e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 275e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 276e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return mTextHelper.getAutoSizeTextType(); 277e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 278cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 279cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu return TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE; 280cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 281cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 282cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 283cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 284cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#getAutoSizeStepGranularity(TextView)} 285cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 286cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 287cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 288cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 289cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 290cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public int getAutoSizeStepGranularity() { 291e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 292e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return super.getAutoSizeStepGranularity(); 293e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 294e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 295e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return mTextHelper.getAutoSizeStepGranularity(); 296e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 297cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 298cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu return -1; 299cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 300cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 301cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 302cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 303cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#getAutoSizeMinTextSize(TextView)} 304cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 305cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 306cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 307cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 308cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 309cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public int getAutoSizeMinTextSize() { 310e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 311e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return super.getAutoSizeMinTextSize(); 312e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 313e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 314e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return mTextHelper.getAutoSizeMinTextSize(); 315e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 316cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 317cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu return -1; 318cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 319cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 320cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 321cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 322cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#getAutoSizeMaxTextSize(TextView)} 323cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 324cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 325cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 326cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 327cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 328cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public int getAutoSizeMaxTextSize() { 329e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 330e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return super.getAutoSizeMaxTextSize(); 331e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 332e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 333e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return mTextHelper.getAutoSizeMaxTextSize(); 334e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 335cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 336cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu return -1; 337cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 338cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu 339cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu /** 340cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * This should be accessed via 341cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * {@link android.support.v4.widget.TextViewCompat#getAutoSizeTextAvailableSizes(TextView)} 342cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * 343cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu * @hide 344cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu */ 345cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @RestrictTo(LIBRARY_GROUP) 346cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu @Override 347cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu public int[] getAutoSizeTextAvailableSizes() { 348e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (BuildCompat.isAtLeastO()) { 349e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return super.getAutoSizeTextAvailableSizes(); 350e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } else { 351e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu if (mTextHelper != null) { 352e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu return mTextHelper.getAutoSizeTextAvailableSizes(); 353e93cedb4454a05a0ecba12ff1ba60965c5c9d8d0Andrei Stingaceanu } 354cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 355cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu return new int[0]; 356cc93b432d3b66d1127b1d71cf1b95eb8a21ef319Andrei Stingaceanu } 35789208232f3b5d1451408d787872504a190bc7ee0Chris Banes} 358