56 lines
1.8 KiB
Kotlin
56 lines
1.8 KiB
Kotlin
package com.gh.common.util
|
|
|
|
import android.text.Editable
|
|
import android.text.InputFilter
|
|
import android.text.TextWatcher
|
|
import android.widget.EditText
|
|
import com.gh.gamecenter.R
|
|
|
|
object TextHelper {
|
|
|
|
@JvmStatic
|
|
fun limitTheLengthOfEditText(editText: EditText, length: Int, exceedCallback: ExceedTextLengthLimitCallback? = null) {
|
|
editText.addTextChangedListener(object : TextWatcher {
|
|
override fun afterTextChanged(s: Editable?) {
|
|
|
|
}
|
|
|
|
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
|
|
|
|
}
|
|
|
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
|
val tvCount = editText.text.toString().length
|
|
if (tvCount > length) {
|
|
val str = editText.text.toString().substring(0, length)
|
|
editText.setText(str)
|
|
editText.setSelection(str.length)
|
|
if (!ClickUtils.isFastDoubleClick(R.id.userinfo_nickname_et, 2000)) {
|
|
exceedCallback?.onExceed()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
@JvmStatic
|
|
fun getFilter(maxLength: Int, msg: String)//限制最大长度-Toast弹窗提示
|
|
: InputFilter {
|
|
return InputFilter { source, start, end, dest, dstart, dend ->
|
|
val keep = maxLength - (dest.length - (dend - dstart))
|
|
if (keep < end - start) {
|
|
ToastUtils.showToast(msg)
|
|
}
|
|
when {
|
|
keep <= 0 -> ""
|
|
keep >= end - start -> null
|
|
else -> source.subSequence(start, start + keep)
|
|
}
|
|
}
|
|
}
|
|
|
|
interface ExceedTextLengthLimitCallback {
|
|
fun onExceed()
|
|
}
|
|
|
|
} |