Commit 684d0bbf authored by yinjiacheng's avatar yinjiacheng

fix UI走查 身份信息、营业执照信息表单样式

parent 7d3aa55f
......@@ -12,6 +12,7 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.view.isVisible
import com.bumptech.glide.Glide
......@@ -254,6 +255,7 @@ class LifeAccountBusinessLicenseAuthFragment :
viewBinding.ivBusinessLicense.setImageDrawable(null)
// 清除错误提示
viewBinding.tvUploadErrorTips.isVisible = false
activity?.let { viewBinding.viewBusinessLicenseUploadDivider.setBackgroundColor(ContextCompat.getColor(it, R.color.color_FFF2F2F2)) }
viewBinding.ivClear.isVisible = false
// 清除OCR或用户输入内容
viewBinding.evRegistrationName.clearEditContent()
......@@ -310,6 +312,7 @@ class LifeAccountBusinessLicenseAuthFragment :
viewBinding.tvUploadErrorTips.isVisible = true
viewBinding.tvUploadErrorTips.text =
resources.getString(R.string.check_business_license_distinct)
activity?.let { viewBinding.viewBusinessLicenseUploadDivider.setBackgroundColor(ContextCompat.getColor(it, R.color.color_FFFF3A3A)) }
}
override fun onTextClear(from: LifeAccountAuthBusinessInfoEditView) {
......
......@@ -8,6 +8,7 @@ import android.text.TextUtils
import android.text.TextWatcher
import android.util.AttributeSet
import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.yidian.nightmode.widget.YdConstraintLayout
import com.yidian.shenghuoquan.newscontent.R
......@@ -22,7 +23,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : YdConstraintLayout(context, attrs, defStyle), View.OnClickListener, TextWatcher {
) : YdConstraintLayout(context, attrs, defStyle), View.OnClickListener, TextWatcher, View.OnFocusChangeListener {
private val viewBinding: ViewLifeAccountAuthBusinessInfoEditBinding =
ViewLifeAccountAuthBusinessInfoEditBinding.bind(
......@@ -50,6 +51,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
typedArray.recycle()
viewBinding.ivClear.setOnClickListener(this)
viewBinding.etContent.addTextChangedListener(this)
viewBinding.etContent.onFocusChangeListener = this
}
/**
......@@ -58,6 +60,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.isVisible = true
viewBinding.tvErrorTips.text = tips
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
highLightEditContent()
}
......@@ -67,6 +70,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
private fun dismissErrorTips() {
viewBinding.tvErrorTips.isVisible = false
viewBinding.tvErrorTips.text = ""
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_333333))
cancelHighLightEditContent()
}
......@@ -77,7 +81,6 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
viewBinding.etContent.setText("")
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
callback?.onTextClear(this)
}
......@@ -105,7 +108,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
*/
fun highLightEditContent() {
isInputError = true
viewBinding.etContent.setTextColor(Color.parseColor("#FFFF3A3A"))
viewBinding.etContent.setTextColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
}
/**
......@@ -113,7 +116,7 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
*/
private fun cancelHighLightEditContent() {
isInputError = false
viewBinding.etContent.setTextColor(Color.parseColor("#FF333333"))
viewBinding.etContent.setTextColor(ContextCompat.getColor(context, R.color.color_333333))
}
/**
......@@ -144,7 +147,16 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
callback?.onTextChange(this, s.toString())
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
}
override fun onFocusChange(v: View?, hasFocus: Boolean) {
if (hasFocus) {
// 获得焦点
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_333333))
} else {
// 失去焦点
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_FFF2F2F2))
}
}
......
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
import android.view.View
import androidx.core.content.ContextCompat
import com.yidian.nightmode.widget.YdConstraintLayout
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthIdentityInfoEditBinding
......@@ -18,171 +18,182 @@ import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthIdenti
* description: 生活号认证 身份证信息录入
*/
class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : YdConstraintLayout(context, attrs, defStyle), View.OnClickListener, TextWatcher {
private val viewBinding: ViewLifeAccountAuthIdentityInfoEditBinding =
ViewLifeAccountAuthIdentityInfoEditBinding.bind(
View.inflate(
getContext(),
R.layout.view_life_account_auth_identity_info_edit,
this
)
)
private var callback: OnLifeAccountAuthIdentityInfoEditViewCallback? = null
/**
* 是否输入错误标识位
*/
private var isInputError = false
init {
val typedArray =
context.obtainStyledAttributes(attrs, R.styleable.LifeAccountAuthIdentityInfoEditView)
viewBinding.tvContent.text =
typedArray.getText(R.styleable.LifeAccountAuthIdentityInfoEditView_LifeAccountAuthIdentityInfoEditView_content_text)
viewBinding.etContent.hint =
typedArray.getText(R.styleable.LifeAccountAuthIdentityInfoEditView_LifeAccountAuthIdentityInfoEditView_hint_text)
typedArray.recycle()
viewBinding.ivClear.setOnClickListener(this)
viewBinding.etContent.addTextChangedListener(this)
}
/**
* 设置标题
*/
fun setTitleContent(content: String) {
viewBinding.tvContent.text = content
}
/**
* 展示错误提示
*/
fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.visibility = View.VISIBLE
viewBinding.tvErrorTips.text = tips
highLightEditContent()
}
/**
* 隐藏错误提示
*/
private fun dismissErrorTips() {
viewBinding.tvErrorTips.visibility = View.GONE
viewBinding.tvErrorTips.text = ""
cancelHighLightEditContent()
}
/**
* 清除输入的文字
*/
fun clearEditContent() {
viewBinding.etContent.setText("")
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
callback?.onTextClear(this)
}
/**
* 填充传入的文字
*/
fun fillEditContent(content: String?) {
if (!TextUtils.isEmpty(content)) {
viewBinding.etContent.setText(content)
viewBinding.ivClear.visibility = View.VISIBLE
}
}
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.visibility = View.GONE
viewBinding.etContent.keyListener = null
}
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : YdConstraintLayout(context, attrs, defStyle), View.OnClickListener, TextWatcher, View.OnFocusChangeListener {
private val viewBinding: ViewLifeAccountAuthIdentityInfoEditBinding =
ViewLifeAccountAuthIdentityInfoEditBinding.bind(
View.inflate(
getContext(),
R.layout.view_life_account_auth_identity_info_edit,
this
)
)
private var callback: OnLifeAccountAuthIdentityInfoEditViewCallback? = null
/**
* 是否输入错误标识位
*/
private var isInputError = false
init {
val typedArray =
context.obtainStyledAttributes(attrs, R.styleable.LifeAccountAuthIdentityInfoEditView)
viewBinding.tvContent.text =
typedArray.getText(R.styleable.LifeAccountAuthIdentityInfoEditView_LifeAccountAuthIdentityInfoEditView_content_text)
viewBinding.etContent.hint =
typedArray.getText(R.styleable.LifeAccountAuthIdentityInfoEditView_LifeAccountAuthIdentityInfoEditView_hint_text)
typedArray.recycle()
viewBinding.ivClear.setOnClickListener(this)
viewBinding.etContent.addTextChangedListener(this)
viewBinding.etContent.onFocusChangeListener = this
}
/**
* 设置标题
*/
fun setTitleContent(content: String) {
viewBinding.tvContent.text = content
}
/**
* 展示错误提示
*/
fun showErrorTips(tips: String) {
viewBinding.tvErrorTips.visibility = View.VISIBLE
viewBinding.tvErrorTips.text = tips
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
highLightEditContent()
}
/**
* 隐藏错误提示
*/
private fun dismissErrorTips() {
viewBinding.tvErrorTips.visibility = View.GONE
viewBinding.tvErrorTips.text = ""
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_333333))
cancelHighLightEditContent()
}
/**
* 清除输入的文字
*/
fun clearEditContent() {
viewBinding.etContent.setText("")
if (isInputError) {
dismissErrorTips()
}
callback?.onTextClear(this)
}
/**
* 填充传入的文字
*/
fun fillEditContent(content: String?) {
if (!TextUtils.isEmpty(content)) {
viewBinding.etContent.setText(content)
viewBinding.ivClear.visibility = View.VISIBLE
}
}
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.visibility = View.GONE
viewBinding.etContent.keyListener = null
}
/**
* 高亮显示输入文本
*/
fun highLightEditContent() {
isInputError = true
viewBinding.etContent.setTextColor(ContextCompat.getColor(context, R.color.color_FFFF3A3A))
}
/**
* 取消高亮显示输入文本
*/
fun cancelHighLightEditContent() {
isInputError = false
viewBinding.etContent.setTextColor(ContextCompat.getColor(context, R.color.color_333333))
}
/**
* 输入框获取焦点
*/
fun requestEditTextFocus() {
viewBinding.etContent.isFocusable = true
viewBinding.etContent.isFocusableInTouchMode = true
viewBinding.etContent.requestFocus()
}
/**
* 获取当前输入的内容
*/
fun getEditContent(): String {
return viewBinding.etContent.text.toString()
}
/**
* 设置输入过滤
*/
fun setInputFilters(vararg filter: InputFilter) {
viewBinding.etContent.filters = filter
}
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.visibility = if (TextUtils.isEmpty(s)) View.GONE else View.VISIBLE
callback?.onTextChange(this, s.toString())
if (isInputError) {
dismissErrorTips()
}
}
override fun onFocusChange(v: View?, hasFocus: Boolean) {
if (hasFocus) {
// 获得焦点
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_333333))
} else {
// 失去焦点
viewBinding.viewDivider.setBackgroundColor(ContextCompat.getColor(context, R.color.color_FFF2F2F2))
}
}
fun setOnLifeAccountAuthIdentityInfoEditViewCallback(callback: OnLifeAccountAuthIdentityInfoEditViewCallback) {
this.callback = callback
}
interface OnLifeAccountAuthIdentityInfoEditViewCallback {
/**
* 高亮显示输入文本
* 清除内容
*/
fun highLightEditContent() {
isInputError = true
viewBinding.etContent.setTextColor(Color.parseColor("#FFFF3A3A"))
}
/**
* 取消高亮显示输入文本
*/
fun cancelHighLightEditContent() {
isInputError = false
viewBinding.etContent.setTextColor(Color.parseColor("#FF333333"))
}
fun onTextClear(from: LifeAccountAuthIdentityInfoEditView)
/**
* 输入框获取焦点
* 内容修改
*/
fun requestEditTextFocus() {
viewBinding.etContent.isFocusable = true
viewBinding.etContent.isFocusableInTouchMode = true
viewBinding.etContent.requestFocus()
}
/**
* 获取当前输入的内容
*/
fun getEditContent(): String {
return viewBinding.etContent.text.toString()
}
/**
* 设置输入过滤
*/
fun setInputFilters(vararg filter: InputFilter) {
viewBinding.etContent.filters = filter
}
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.visibility = if (TextUtils.isEmpty(s)) View.GONE else View.VISIBLE
callback?.onTextChange(this, s.toString())
if (isInputError) {
dismissErrorTips()
cancelHighLightEditContent()
}
}
fun setOnLifeAccountAuthIdentityInfoEditViewCallback(callback: OnLifeAccountAuthIdentityInfoEditViewCallback) {
this.callback = callback
}
interface OnLifeAccountAuthIdentityInfoEditViewCallback {
/**
* 清除内容
*/
fun onTextClear(from: LifeAccountAuthIdentityInfoEditView)
/**
* 内容修改
*/
fun onTextChange(from: LifeAccountAuthIdentityInfoEditView, text: String)
}
}
\ No newline at end of file
fun onTextChange(from: LifeAccountAuthIdentityInfoEditView, text: String)
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_FF1852F1" />
<size
android:width="@dimen/dp2"
android:height="@dimen/dp19" />
</shape>
\ No newline at end of file
......@@ -24,7 +24,9 @@
android:includeFontPadding="false"
android:textColor="#FF333333"
android:textColorHint="#FFC2C2C2"
android:textCursorDrawable="@drawable/shape_bg_input_cursor"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
<com.yidian.nightmode.widget.YdImageView
......
......@@ -28,9 +28,11 @@
android:singleLine="true"
android:textColor="#FF333333"
android:textColorHint="#FFC2C2C2"
android:textCursorDrawable="@drawable/shape_bg_input_cursor"
android:textSize="15sp"
app:layout_constraintStart_toEndOf="@id/tv_content"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/iv_clear"
app:layout_constraintStart_toEndOf="@id/tv_content"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.nightmode.widget.YdImageView
......
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