Edittext光标首次在最后,后面正常移动

这是最近一个小需求,但始终没有达到产品需求,修改Edittext任何事件在修改经常会导致方法反复触发,如果判断不到位经常达不到效果。实验过后网上效果都不理想,现在po出最后的完美方案。

 * Created by Rex on 2019/1/3.
 */
 
public class AutoRightEditText extends EditText {
 
    public boolean isFirstOnClick = true;
    private boolean isShowEnd;
 
    public AutoRightEditText(Context context) {
        super(context);
        initView();
    }
 
 
    public AutoRightEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }
 
    public AutoRightEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }
 
    private void initView() {
        setClickable(true);
        /**
         * 如果你本身使用的该方法记得 !hasFocus--->isFirstOnClick = true
         */
 
        setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    isFirstOnClick = true;
                }
            }
        });
    }
 
    @Override
    protected void dispatchSetPressed(boolean pressed) {
        super.dispatchSetPressed(pressed);
 
        if (isFirstOnClick && isPressed()) {
            isShowEnd = true;
            int len = getText().length();
            setSelection(len);
        } else {
            isShowEnd = false;
            isFirstOnClick = false;
        }
 
    }
 
    @Override
    protected void onSelectionChanged(int selStart, int selEnd) {
        super.onSelectionChanged(selStart, selEnd);
        if (isShowEnd && selStart == selEnd) {
            setSelection(getText().length());
        }
        
 
    }
 
 
}
 
--------------------- 
作者:Rex叶然 
原文:https://blog.csdn.net/qq_28844947/article/details/85791687 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相遇代表有缘,错过代表无份,有缘无份的爱情到了最后就只留下了痛苦。每段过去都有亦苦亦甜的回忆,而欢乐过后就只剩下了...
    一句情话一段青春阅读 528评论 0 3
  • 目前在读一本叫《情商高就是说话让人舒服》的书。一两个月前就买了,可是没有想起来读。 在意识到自身“嘴笨”的毛病后,...
    文卓也阅读 169评论 0 0