18034727885
2026-04-22 0fae188c067e3c5df86ceadcc53a22a5353307a0
登录密码可见隐藏优化
2个文件已修改
37 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/ui/user/login/LoginActivity.kt 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/user/login/LoginActivity.kt
@@ -3,12 +3,15 @@
import android.annotation.SuppressLint
import android.graphics.Color
import android.text.TextPaint
import android.text.method.HideReturnsTransformationMethod
import android.text.method.LinkMovementMethod
import android.text.method.PasswordTransformationMethod
import android.text.style.ClickableSpan
import android.view.View
import android.webkit.WebSettings
import android.webkit.WebView
import android.widget.Button
import androidx.appcompat.widget.AppCompatEditText
import androidx.core.os.bundleOf
import androidx.databinding.DataBindingUtil
import com.afollestad.materialdialogs.MaterialDialog
@@ -129,12 +132,29 @@
    override fun setObservable() {
        super.setObservable()
        viewModel.protocolStatus.observe(this){
        viewModel.protocolStatus.observe(this) {
            MMKVManager.getInstance().saveBoolean(KeyPreferences.NEED_READ, !it)
        }
        viewModel.phone.observe(this){
        viewModel.phone.observe(this) {
            viewModel.canGetCode.value = it.length == 11
        }
        viewModel.eyeStatus2.observe(this) {
            setPasswordVisible(binding.psw, it)
        }
    }
    /**
     * 设置密码显示/隐藏
     * @param visible true=明文, false=密文
     */
    private fun setPasswordVisible(et: AppCompatEditText, visible: Boolean) {
        if (visible) {
            et.transformationMethod = HideReturnsTransformationMethod.getInstance()
        } else {
            et.transformationMethod = PasswordTransformationMethod.getInstance()
        }
        // 关键:切换后需要将光标移到最后,防止光标跳到开头
        et.setSelection(et.text?.length ?: 0)
    }
    // 标记两个协议是否都已读到底部
@@ -164,7 +184,7 @@
                    viewModel.protocolStatus.value = true
                    dismiss()
                }
                initWeb(bind.protocolLayout.web,bind.btnRight)
                initWeb(bind.protocolLayout.web, bind.btnRight)
                val getProtocol: (Int) -> Unit = { type ->
                    currentTab = type
app/src/main/res/layout/activity_login.xml
@@ -127,6 +127,17 @@
            android:textSize="@dimen/sp_14"
            app:layout_constraintTop_toBottomOf="@+id/code" />
        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/eye2"
            selected="@{viewModel.eyeStatus2}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{viewModel.onClick}"
            android:src="@drawable/selector_eye_status"
            app:layout_constraintBottom_toBottomOf="@+id/psw"
            app:layout_constraintEnd_toEndOf="@+id/psw"
            app:layout_constraintTop_toTopOf="@+id/psw" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1px"