diff --git a/app/src/main/java/com/sw/dualscreen/activity/fragment/pay/NumberPayFragment.kt b/app/src/main/java/com/sw/dualscreen/activity/fragment/pay/NumberPayFragment.kt index a2cb94b..61881c6 100644 --- a/app/src/main/java/com/sw/dualscreen/activity/fragment/pay/NumberPayFragment.kt +++ b/app/src/main/java/com/sw/dualscreen/activity/fragment/pay/NumberPayFragment.kt @@ -1,5 +1,7 @@ package com.sw.dualscreen.activity.fragment.pay +import android.text.InputType +import com.sw.dualscreen.R import com.sw.dualscreen.activity.PayActivity import com.sw.dualscreen.activity.fragment.BaseFragment import com.sw.dualscreen.databinding.FragmentNumberPayBinding @@ -13,6 +15,8 @@ class NumberPayFragment : BaseFragment() { private lateinit var payActivity: PayActivity private var foodName: String? = null private var payAmount: Double? = null + // 密码是否显示的标志 + private var isPasswordVisible = false override fun inflateViewBinding(): FragmentNumberPayBinding { return FragmentNumberPayBinding.inflate(layoutInflater) } @@ -27,6 +31,12 @@ class NumberPayFragment : BaseFragment() { foodName = it.foodName payAmount = (it.specPrice ?: 0.0) * payActivity.eatNum } + + // 密码显示/隐藏切换 + binding.ivTogglePassword.setOnClickListener { + togglePasswordVisibility() + } + binding.btnConfirm.setOnClickListener { v -> val phone = binding.etInputPhone.text.toString().trim() val key = binding.etInputNumber.text.toString().trim() @@ -127,6 +137,30 @@ class NumberPayFragment : BaseFragment() { } } + // 切换密码显示/隐藏 + private fun togglePasswordVisibility() { + val editText = binding.etInputNumber + val imageView = binding.ivTogglePassword + + // 保存当前光标位置 + val cursorPosition = editText.selectionStart + + if (isPasswordVisible) { + // 当前显示,改为隐藏 + editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD + imageView.setImageResource(R.drawable.ic_eye_close) + isPasswordVisible = false + } else { + // 当前隐藏,改为显示 + editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD + imageView.setImageResource(R.drawable.ic_eye_open) + isPasswordVisible = true + } + + // 恢复光标位置 + editText.setSelection(cursorPosition) + } + // private fun bindOrder(userId: String, block: () -> Unit) { // payActivity.bindOrder(userId) { bindResult -> // if (bindResult.not()) { diff --git a/app/src/main/res/drawable/ic_eye_close.xml b/app/src/main/res/drawable/ic_eye_close.xml new file mode 100644 index 0000000..16c0bad --- /dev/null +++ b/app/src/main/res/drawable/ic_eye_close.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_eye_open.xml b/app/src/main/res/drawable/ic_eye_open.xml new file mode 100644 index 0000000..0078b33 --- /dev/null +++ b/app/src/main/res/drawable/ic_eye_open.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/layout/fragment_number_pay.xml b/app/src/main/res/layout/fragment_number_pay.xml index 54467d8..ff25eba 100644 --- a/app/src/main/res/layout/fragment_number_pay.xml +++ b/app/src/main/res/layout/fragment_number_pay.xml @@ -34,24 +34,41 @@ android:textStyle="bold" tools:ignore="Autofill,HardcodedText,LabelFor,TextFields" /> - + android:layout_marginTop="32dp"> + + + + + +