Commit 5a9c632b authored by yinjiacheng's avatar yinjiacheng

update 生活号认证信息输入字符过滤

parent 5360c59a
......@@ -11,15 +11,80 @@ import java.util.regex.Pattern
*/
object InputFilterUtil {
/**
* 只允许汉字输入
*/
fun getChineseFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
/**
* 只允许汉字输入
*/
fun getChineseFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
\ No newline at end of file
}
/**
* 真实姓名过滤
* 汉字 + ·
*/
fun getRealNameFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF|·]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
/**
* 身份证号过滤
* 数字 + X
*/
fun getIDCardNumberFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[0-9|X]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
/**
* 手机号过滤
* 数字
*/
fun getPhoneNumberFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[0-9]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
/**
* 公司注册名过滤
* 汉字
*/
fun getRegistrationNameFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
/**
* 统一社会信用代码过滤
* 数字 + 大写字母
*/
fun getRegistrationCodeFilter(): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
val pattern = Pattern.compile("[0-9A-Z]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
return@InputFilter null
}
}
}
......@@ -3,6 +3,7 @@ package com.yidian.shenghuoquan.newscontent.widget
import android.content.Context
import android.graphics.Color
import android.text.Editable
import android.text.InputFilter
import android.text.TextUtils
import android.text.TextWatcher
import android.util.AttributeSet
......@@ -18,139 +19,146 @@ import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthBusine
* description: 生活号认证 营业执照信息录入
*/
class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : YdConstraintLayout(context, attrs, defStyle), View.OnClickListener, TextWatcher {
private val viewBinding: ViewLifeAccountAuthBusinessInfoEditBinding =
ViewLifeAccountAuthBusinessInfoEditBinding.bind(
View.inflate(
getContext(),
R.layout.view_life_account_auth_business_info_edit,
this
)
)
private var callback: OnLifeAccountAuthBusinessInfoEditViewCallback? = null
/**
* 是否输入错误标识位
*/
private var isInputError = false
init {
val typedArray =
context.obtainStyledAttributes(attrs, R.styleable.LifeAccountAuthBusinessInfoEditView)
viewBinding.tvContent.text =
typedArray.getText(R.styleable.LifeAccountAuthBusinessInfoEditView_LifeAccountAuthBusinessInfoEditView_content_text)
viewBinding.etContent.hint =
typedArray.getText(R.styleable.LifeAccountAuthBusinessInfoEditView_LifeAccountAuthBusinessInfoEditView_hint_text)
typedArray.recycle()
viewBinding.ivClear.setOnClickListener(this)
viewBinding.etContent.addTextChangedListener(this)
private val viewBinding: ViewLifeAccountAuthBusinessInfoEditBinding =
ViewLifeAccountAuthBusinessInfoEditBinding.bind(
View.inflate(
getContext(),
R.layout.view_life_account_auth_business_info_edit,
this
)
)
private var callback: OnLifeAccountAuthBusinessInfoEditViewCallback? = null
/**
* 是否输入错误标识位
*/
private var isInputError = false
init {
val typedArray =
context.obtainStyledAttributes(attrs, R.styleable.LifeAccountAuthBusinessInfoEditView)
viewBinding.tvContent.text =
typedArray.getText(R.styleable.LifeAccountAuthBusinessInfoEditView_LifeAccountAuthBusinessInfoEditView_content_text)
viewBinding.etContent.hint =
typedArray.getText(R.styleable.LifeAccountAuthBusinessInfoEditView_LifeAccountAuthBusinessInfoEditView_hint_text)
typedArray.recycle()
viewBinding.ivClear.setOnClickListener(this)
viewBinding.etContent.addTextChangedListener(this)
}
/**
* 展示错误提示
*/
fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.isVisible = true
viewBinding.tvErrorTips.text = tips
}
/**
* 隐藏错误提示
*/
private fun dismissErrorTips() {
viewBinding.tvErrorTips.isVisible = false
viewBinding.tvErrorTips.text = ""
}
/**
* 清除输入的文字
*/
fun clearEditContent() {
viewBinding.etContent.setText("")
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
/**
* 展示错误提示
*/
fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.isVisible = true
viewBinding.tvErrorTips.text = tips
callback?.onTextClear(this)
}
/**
* 填充传入的文字
*/
fun fillEditContent(content: String?) {
if (!TextUtils.isEmpty(content)) {
viewBinding.etContent.setText(content)
viewBinding.ivClear.visibility = View.VISIBLE
}
/**
* 隐藏错误提示
*/
private fun dismissErrorTips() {
viewBinding.tvErrorTips.isVisible = false
viewBinding.tvErrorTips.text = ""
}
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.isVisible = false
viewBinding.etContent.keyListener = null
}
/**
* 高亮显示输入文本
*/
fun highLightEditContent() {
isInputError = true
viewBinding.etContent.setTextColor(Color.parseColor("#FFFF3A3A"))
}
/**
* 取消高亮显示输入文本
*/
private fun cancelHighLightEditContent() {
isInputError = false
viewBinding.etContent.setTextColor(Color.parseColor("#FF333333"))
}
/**
* 设置输入过滤
*/
fun setInputFilters(vararg filter: InputFilter) {
viewBinding.etContent.filters = filter
}
override fun onClick(v: View?) {
if (v?.id == R.id.iv_clear) {
// 清除输入框中的内容
clearEditContent()
}
}
/**
* 清除输入的文字
*/
fun clearEditContent() {
viewBinding.etContent.setText("")
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
callback?.onTextClear(this)
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
/**
* 填充传入的文字
*/
fun fillEditContent(content: String?) {
if (!TextUtils.isEmpty(content)) {
viewBinding.etContent.setText(content)
viewBinding.ivClear.visibility = View.VISIBLE
}
}
}
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.isVisible = false
viewBinding.etContent.keyListener = null
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun afterTextChanged(s: Editable?) {
// 处理一键清除按钮
viewBinding.ivClear.isVisible = !TextUtils.isEmpty(s)
callback?.onTextChange(this, s.toString())
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
}
fun setOnLifeAccountAuthBusinessInfoEditViewCallback(callback: OnLifeAccountAuthBusinessInfoEditViewCallback) {
this.callback = callback
}
interface OnLifeAccountAuthBusinessInfoEditViewCallback {
/**
* 高亮显示输入文本
* 清除内容
*/
fun highLightEditContent() {
isInputError = true
viewBinding.etContent.setTextColor(Color.parseColor("#FFFF3A3A"))
}
fun onTextClear(from: LifeAccountAuthBusinessInfoEditView)
/**
* 取消高亮显示输入文本
* 内容修改
*/
private fun cancelHighLightEditContent() {
isInputError = false
viewBinding.etContent.setTextColor(Color.parseColor("#FF333333"))
}
override fun onClick(v: View?) {
if (v?.id == R.id.iv_clear) {
// 清除输入框中的内容
clearEditContent()
}
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun afterTextChanged(s: Editable?) {
// 处理一键清除按钮
viewBinding.ivClear.isVisible = !TextUtils.isEmpty(s)
callback?.onTextChange(this, s.toString())
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
}
fun setOnLifeAccountAuthBusinessInfoEditViewCallback(callback: OnLifeAccountAuthBusinessInfoEditViewCallback) {
this.callback = callback
}
interface OnLifeAccountAuthBusinessInfoEditViewCallback {
/**
* 清除内容
*/
fun onTextClear(from: LifeAccountAuthBusinessInfoEditView)
/**
* 内容修改
*/
fun onTextChange(from: LifeAccountAuthBusinessInfoEditView, text: String)
}
}
\ No newline at end of file
fun onTextChange(from: LifeAccountAuthBusinessInfoEditView, text: String)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment