diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 7e1385d..990efe1 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index 7675afe..c67d820 100644 Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ diff --git a/AutoFitTextViewLibrary/AndroidManifest.xml b/AutoFitTextViewLibrary/AndroidManifest.xml index 5cf5251..82e47a7 100644 --- a/AutoFitTextViewLibrary/AndroidManifest.xml +++ b/AutoFitTextViewLibrary/AndroidManifest.xml @@ -1,7 +1,6 @@ - + - + diff --git a/AutoFitTextViewLibrary/build.gradle b/AutoFitTextViewLibrary/build.gradle index 7937b5f..6294cb0 100644 --- a/AutoFitTextViewLibrary/build.gradle +++ b/AutoFitTextViewLibrary/build.gradle @@ -37,7 +37,7 @@ android { dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' - compile "androidx.core:core-ktx:+" + compile "androidx.core:core-ktx:1.0.1" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } repositories { diff --git a/AutoFitTextViewLibrary/project.properties b/AutoFitTextViewLibrary/project.properties index 93c8c3c..e195e98 100644 --- a/AutoFitTextViewLibrary/project.properties +++ b/AutoFitTextViewLibrary/project.properties @@ -9,7 +9,6 @@ # # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - # Project target. target=android-21 android.library=true diff --git a/AutoFitTextViewLibrary/src/com/lb/auto_fit_textview/AutoResizeTextView.kt b/AutoFitTextViewLibrary/src/com/lb/auto_fit_textview/AutoResizeTextView.kt index e25a84b..5e2801a 100644 --- a/AutoFitTextViewLibrary/src/com/lb/auto_fit_textview/AutoResizeTextView.kt +++ b/AutoFitTextViewLibrary/src/com/lb/auto_fit_textview/AutoResizeTextView.kt @@ -21,16 +21,16 @@ import androidx.appcompat.widget.AppCompatTextView * More info here: https://code.google.com/p/android/issues/detail?id=22493 and here in case you wish to fix it: http://stackoverflow.com/a/21851239/878126 */ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = android.R.attr.textViewStyle) : AppCompatTextView(context, attrs, defStyle) { - private val _availableSpaceRect = RectF() - private val _sizeTester: SizeTester - private var _maxTextSize: Float = 0.toFloat() - private var _spacingMult = 1.0f - private var _spacingAdd = 0.0f - private var _minTextSize: Float = 0.toFloat() - private var _widthLimit: Int = 0 - private var _maxLines: Int = 0 - private var _initialized = false - private var _paint: TextPaint? = null + private val availableSpaceRect = RectF() + private val sizeTester: SizeTester + private var maxTextSize: Float = 0.toFloat() + private var spacingMult = 1.0f + private var spacingAdd = 0.0f + private var minTextSize: Float = 0.toFloat() + private var widthLimit: Int = 0 + private var maxLines: Int = 0 + private var initialized = false + private var textPaint: TextPaint? = null private interface SizeTester { /** @@ -45,19 +45,19 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr init { // using the minimal recommended font size - _minTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, resources.displayMetrics) - _maxTextSize = textSize - _paint = TextPaint(paint) - if (_maxLines == 0) + minTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, resources.displayMetrics) + maxTextSize = textSize + textPaint = TextPaint(paint) + if (maxLines == 0) // no value was assigned during construction - _maxLines = NO_LINE_LIMIT + maxLines = NO_LINE_LIMIT // prepare size tester: - _sizeTester = object : SizeTester { + sizeTester = object : SizeTester { internal val textRect = RectF() @TargetApi(Build.VERSION_CODES.JELLY_BEAN) override fun onTestSize(suggestedSize: Int, availableSpace: RectF): Int { - _paint!!.textSize = suggestedSize.toFloat() + textPaint!!.textSize = suggestedSize.toFloat() val transformationMethod = transformationMethod val text: String if (transformationMethod != null) @@ -66,10 +66,10 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr text = getText().toString() val singleLine = maxLines == 1 if (singleLine) { - textRect.bottom = _paint!!.fontSpacing - textRect.right = _paint!!.measureText(text) + textRect.bottom = textPaint!!.fontSpacing + textRect.right = textPaint!!.measureText(text) } else { - val layout = StaticLayout(text, _paint, _widthLimit, Alignment.ALIGN_NORMAL, _spacingMult, _spacingAdd, true) + val layout = StaticLayout(text, textPaint, widthLimit, Alignment.ALIGN_NORMAL, spacingMult, spacingAdd, true) // return early if we have more lines if (maxLines != NO_LINE_LIMIT && layout.lineCount > maxLines) return 1 @@ -93,7 +93,7 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr // else, too big } } - _initialized = true + initialized = true } fun isValidWordWrap(before: Char, after: Char): Boolean { @@ -111,38 +111,38 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr } override fun setTextSize(size: Float) { - _maxTextSize = size + maxTextSize = size adjustTextSize() } override fun setMaxLines(maxLines: Int) { super.setMaxLines(maxLines) - _maxLines = maxLines + this.maxLines = maxLines adjustTextSize() } override fun getMaxLines(): Int { - return _maxLines + return maxLines } override fun setSingleLine() { super.setSingleLine() - _maxLines = 1 + maxLines = 1 adjustTextSize() } override fun setSingleLine(singleLine: Boolean) { super.setSingleLine(singleLine) if (singleLine) - _maxLines = 1 + maxLines = 1 else - _maxLines = NO_LINE_LIMIT + maxLines = NO_LINE_LIMIT adjustTextSize() } override fun setLines(lines: Int) { super.setLines(lines) - _maxLines = lines + maxLines = lines adjustTextSize() } @@ -153,14 +153,14 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr Resources.getSystem() else c.resources - _maxTextSize = TypedValue.applyDimension(unit, size, r.displayMetrics) + maxTextSize = TypedValue.applyDimension(unit, size, r.displayMetrics) adjustTextSize() } override fun setLineSpacing(add: Float, mult: Float) { super.setLineSpacing(add, mult) - _spacingMult = mult - _spacingAdd = add + spacingMult = mult + spacingAdd = add } /** @@ -169,7 +169,7 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr * @param minTextSize */ fun setMinTextSize(minTextSize: Float) { - _minTextSize = minTextSize + this.minTextSize = minTextSize adjustTextSize() } @@ -181,23 +181,23 @@ class AutoResizeTextView @JvmOverloads constructor(context: Context, attrs: Attr // @Override // public void run() // { - if (!_initialized) + if (!initialized) return - val startSize = _minTextSize.toInt() + val startSize = minTextSize.toInt() val heightLimit = measuredHeight - compoundPaddingBottom - compoundPaddingTop - _widthLimit = measuredWidth - compoundPaddingLeft - compoundPaddingRight - if (_widthLimit <= 0) + widthLimit = measuredWidth - compoundPaddingLeft - compoundPaddingRight + if (widthLimit <= 0) return - _paint = TextPaint(paint) - _availableSpaceRect.right = _widthLimit.toFloat() - _availableSpaceRect.bottom = heightLimit.toFloat() + textPaint = TextPaint(paint) + availableSpaceRect.right = widthLimit.toFloat() + availableSpaceRect.bottom = heightLimit.toFloat() superSetTextSize(startSize) // } // }); } private fun superSetTextSize(startSize: Int) { - val textSize = binarySearch(startSize, _maxTextSize.toInt(), _sizeTester, _availableSpaceRect) + val textSize = binarySearch(startSize, maxTextSize.toInt(), sizeTester, availableSpaceRect) super.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize.toFloat()) } diff --git a/AutoFitTextViewSample/AndroidManifest.xml b/AutoFitTextViewSample/AndroidManifest.xml index 54d4171..335ebc0 100644 --- a/AutoFitTextViewSample/AndroidManifest.xml +++ b/AutoFitTextViewSample/AndroidManifest.xml @@ -1,24 +1,17 @@ - + - - - - + + + + - - - - - - + + + + + diff --git a/AutoFitTextViewSample/build.gradle b/AutoFitTextViewSample/build.gradle index 3c10f6e..edd186c 100644 --- a/AutoFitTextViewSample/build.gradle +++ b/AutoFitTextViewSample/build.gradle @@ -7,7 +7,7 @@ android { defaultConfig { applicationId "com.example.autofittextviewsample" - minSdkVersion 14 + minSdkVersion 17 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -41,8 +41,9 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation project(':AutoFitTextViewLibrary') - compile "androidx.core:core-ktx:+" + compile "androidx.core:core-ktx:1.0.1" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' } repositories { mavenCentral() diff --git a/AutoFitTextViewSample/lint.xml b/AutoFitTextViewSample/lint.xml index ee0eead..9c0ed5a 100644 --- a/AutoFitTextViewSample/lint.xml +++ b/AutoFitTextViewSample/lint.xml @@ -1,3 +1,2 @@ - - \ No newline at end of file + diff --git a/AutoFitTextViewSample/project.properties b/AutoFitTextViewSample/project.properties index f5fc260..fb9fae5 100644 --- a/AutoFitTextViewSample/project.properties +++ b/AutoFitTextViewSample/project.properties @@ -9,7 +9,6 @@ # # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - # Project target. target=android-21 android.library.reference.1=..\\AutoFitTextViewLibrary diff --git a/AutoFitTextViewSample/res/layout/activity_main.xml b/AutoFitTextViewSample/res/layout/activity_main.xml index 9c9fcc8..855d748 100644 --- a/AutoFitTextViewSample/res/layout/activity_main.xml +++ b/AutoFitTextViewSample/res/layout/activity_main.xml @@ -1,115 +1,52 @@ - + - + - + -