Added autoFitTextView.

This commit is contained in:
Erik C. Thauvin 2016-08-26 22:31:17 -07:00
parent 59255cae06
commit d7d643b94a
2 changed files with 19 additions and 7 deletions

View file

@ -42,6 +42,9 @@ dependencies {
// https://github.com/JakeWharton/ViewPagerIndicator // https://github.com/JakeWharton/ViewPagerIndicator
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
// https://github.com/AndroidDeveloperLB/AutoFitTextView
compile 'com.github.AndroidDeveloperLB:AutoFitTextView:3'
// https://github.com/hotchemi/PermissionsDispatcher // https://github.com/hotchemi/PermissionsDispatcher
compile 'com.github.hotchemi:permissionsdispatcher:2.1.3' compile 'com.github.hotchemi:permissionsdispatcher:2.1.3'
kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.3' kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.3'
@ -49,6 +52,7 @@ dependencies {
repositories { repositories {
mavenCentral() mavenCentral()
maven { url "https://jitpack.io" }
} }
kapt { kapt {

View file

@ -31,17 +31,21 @@ import android.text.TextUtils
import android.text.method.DigitsKeyListener import android.text.method.DigitsKeyListener
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity.* import android.view.Gravity.*
import android.view.ViewManager
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.EditText import android.widget.EditText
import com.lb.auto_fit_textview.AutoResizeTextView
import net.thauvin.erik.android.tesremoteprogrammer.filters.AlphaFilter import net.thauvin.erik.android.tesremoteprogrammer.filters.AlphaFilter
import net.thauvin.erik.android.tesremoteprogrammer.filters.MinMaxFilter import net.thauvin.erik.android.tesremoteprogrammer.filters.MinMaxFilter
import net.thauvin.erik.android.tesremoteprogrammer.filters.NumberFilter
import net.thauvin.erik.android.tesremoteprogrammer.models.Option import net.thauvin.erik.android.tesremoteprogrammer.models.Option
import net.thauvin.erik.android.tesremoteprogrammer.models.Params import net.thauvin.erik.android.tesremoteprogrammer.models.Params
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
import net.thauvin.erik.android.tesremoteprogrammer.util.plural import net.thauvin.erik.android.tesremoteprogrammer.util.plural
import net.thauvin.erik.android.tesremoteprogrammer.widget.ScrollAwareFABBehavior import net.thauvin.erik.android.tesremoteprogrammer.widget.ScrollAwareFABBehavior
import org.jetbrains.anko.* import org.jetbrains.anko.*
import org.jetbrains.anko.custom.ankoView
import org.jetbrains.anko.design.coordinatorLayout import org.jetbrains.anko.design.coordinatorLayout
import org.jetbrains.anko.design.floatingActionButton import org.jetbrains.anko.design.floatingActionButton
import org.jetbrains.anko.design.textInputLayout import org.jetbrains.anko.design.textInputLayout
@ -52,6 +56,9 @@ import java.util.*
@RuntimePermissions @RuntimePermissions
class ProgrammingActivity : AppCompatActivity(), AnkoLogger { class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
fun ViewManager.autofitTextView(theme: Int = 0, init: AutoResizeTextView.() -> Unit) = ankoView({ AutoResizeTextView(it) }, theme, init)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -61,18 +68,19 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
coordinatorLayout { coordinatorLayout {
textView { autofitTextView {
padding = dip(20) padding = dip(20)
text = option.title text = option.title
setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20f) setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20f)
singleLine = true
maxLines = 1
typeface = Typeface.DEFAULT_BOLD typeface = Typeface.DEFAULT_BOLD
isFocusableInTouchMode = true isFocusableInTouchMode = true
singleLine = true
ellipsize = TextUtils.TruncateAt.END ellipsize = TextUtils.TruncateAt.END
} }.lparams(width = matchParent, height = matchParent)
nestedScrollView { nestedScrollView {
topPadding = dip(55) topPadding = dip(50)
horizontalPadding = dip(20) horizontalPadding = dip(20)
verticalLayout { verticalLayout {
@ -96,9 +104,9 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
inputFilters.add(AlphaFilter()) inputFilters.add(AlphaFilter())
} else { } else {
inputType = InputType.TYPE_CLASS_NUMBER inputType = InputType.TYPE_CLASS_PHONE
keyListener = DigitsKeyListener.getInstance("0,1,2,3,4,5,6,7,8,9" + inputFilters.add(NumberFilter("0123456789" +
if (field.hash) ",${params.hash}" else "") if (field.hash) "${params.hash}" else ""))
if (field.max != -1 && field.min != -1) { if (field.max != -1 && field.min != -1) {
inputFilters.add(MinMaxFilter(field.min, field.max, field.size)) inputFilters.add(MinMaxFilter(field.min, field.max, field.size))
} }