安卓EditText无焦点时显示光标

安卓EditText无焦点时显示光标

1. EditText xml配置

android:cursorVisible="true"

2. 输入框可见时处理逻辑

// 记录是否需要自己处理光标显示
private boolean shouldBlink = true;

// EditText有焦点时android系统会处理光标闪烁逻辑
mSsidEdit.setOnFocusChangeListener((view, focus) -> shouldBlink = !focus);

//核心逻辑 500ms延时刷新闪烁
private void blink() {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                if (shouldBlink) {
                	// 当EditText长度小于0是无需光标
                    if (mPwdEdit.getText().length() > 0) {
                    	// 记录之前的光标显示位置,setText后光标会移动至末位
                        int index = mPwdEdit.getSelectionStart();
                        Log.e(TAG,"开始===" + index);
                        mPwdEdit.setText(mPwdEdit.getText());
                        mPwdEdit.setPressed(true);
                        //将光标移动至之前记录的位置
                        mPwdEdit.setSelection(index);
                    }
                }
                //延时500ms
                mHandler.postDelayed(this, 500);
            }
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值