From c56769769bda9da216d51b4b43972b037c83314f Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 18 Mar 2026 15:42:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E7=A0=81=E8=BE=93=E5=85=A5=E6=A1=86=E4=B8=BA?= =?UTF-8?q?=E5=AF=86=EF=BF=BD=EF=BF=BD=E6=A8=A1=E5=BC=8F=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=98=BE=E7=A4=BA/=E9=9A=90=E8=97=8F=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=88=87=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/pay/NumberPayFragment.kt | 34 ++++++++++++++ app/src/main/res/drawable/ic_eye_close.xml | 11 +++++ app/src/main/res/drawable/ic_eye_open.xml | 15 ++++++ .../main/res/layout/fragment_number_pay.xml | 47 +++++++++++++------ 4 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/drawable/ic_eye_close.xml create mode 100644 app/src/main/res/drawable/ic_eye_open.xml 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"> + + + + + +