/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package androidx.core.widget; import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP; import android.os.Build; import android.util.TypedValue; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; /** * Interface which allows a {@link android.widget.TextView} to receive background auto-sizing calls * from {@link TextViewCompat} when running on API v26 devices or lower. * * @hide Internal use only */ @RestrictTo(LIBRARY_GROUP) public interface AutoSizeableTextView { /** * @hide */ @RestrictTo(LIBRARY_GROUP) boolean PLATFORM_SUPPORTS_AUTOSIZE = Build.VERSION.SDK_INT >= 27; /** * Specify whether this widget should automatically scale the text to try to perfectly fit * within the layout bounds by using the default auto-size configuration. * * @param autoSizeTextType the type of auto-size. Must be one of * {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_NONE} or * {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM} * * @see #getAutoSizeTextType() */ void setAutoSizeTextTypeWithDefaults(@TextViewCompat.AutoSizeTextType int autoSizeTextType); /** * Specify whether this widget should automatically scale the text to try to perfectly fit * within the layout bounds. If all the configuration params are valid the type of auto-size is * set to {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM}. * * @param autoSizeMinTextSize the minimum text size available for auto-size * @param autoSizeMaxTextSize the maximum text size available for auto-size * @param autoSizeStepGranularity the auto-size step granularity. It is used in conjunction with * the minimum and maximum text size in order to build the set of * text sizes the system uses to choose from when auto-sizing * @param unit the desired dimension unit for all sizes above. See {@link TypedValue} for the * possible dimension units * * @throws IllegalArgumentException if any of the configuration params are invalid. * * @see #setAutoSizeTextTypeWithDefaults(int) * @see #setAutoSizeTextTypeUniformWithPresetSizes(int[], int) * @see #getAutoSizeMinTextSize() * @see #getAutoSizeMaxTextSize() * @see #getAutoSizeStepGranularity() * @see #getAutoSizeTextAvailableSizes() */ void setAutoSizeTextTypeUniformWithConfiguration( int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) throws IllegalArgumentException; /** * Specify whether this widget should automatically scale the text to try to perfectly fit * within the layout bounds. If at least one value from the presetSizes is valid * then the type of auto-size is set to {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM}. * * @param presetSizes an {@code int} array of sizes in pixels * @param unit the desired dimension unit for the preset sizes above. See {@link TypedValue} for * the possible dimension units * * @throws IllegalArgumentException if all of the presetSizes are invalid. *_ * @see #setAutoSizeTextTypeWithDefaults(int) * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) * @see #getAutoSizeMinTextSize() * @see #getAutoSizeMaxTextSize() * @see #getAutoSizeTextAvailableSizes() */ void setAutoSizeTextTypeUniformWithPresetSizes(@NonNull int[] presetSizes, int unit) throws IllegalArgumentException; /** * Returns the type of auto-size set for this widget. * * @return an {@code int} corresponding to one of the auto-size types: * {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_NONE} or * {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM} * * @see #setAutoSizeTextTypeWithDefaults(int) * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) * @see #setAutoSizeTextTypeUniformWithPresetSizes(int[], int) */ @TextViewCompat.AutoSizeTextType int getAutoSizeTextType(); /** * @return the current auto-size step granularity in pixels. * * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) */ int getAutoSizeStepGranularity(); /** * @return the current auto-size minimum text size in pixels (the default is 12sp). Note that * if auto-size has not been configured this function returns {@code -1}. * * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) * @see #setAutoSizeTextTypeUniformWithPresetSizes(int[], int) */ int getAutoSizeMinTextSize(); /** * @return the current auto-size maximum text size in pixels (the default is 112sp). Note that * if auto-size has not been configured this function returns {@code -1}. * * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) * @see #setAutoSizeTextTypeUniformWithPresetSizes(int[], int) */ int getAutoSizeMaxTextSize(); /** * @return the current auto-size {@code int} sizes array (in pixels). * * @see #setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) * @see #setAutoSizeTextTypeUniformWithPresetSizes(int[], int) */ int[] getAutoSizeTextAvailableSizes(); }