Android----EditText 光标仿ios,默认在最后面,点击整栏也在最后面,点击文本光标在对应位置

最近有个需求,要求edit的光标在默认在最右端

Android----EditText 光标仿ios,默认在最后面,点击整栏也在最后面,点击文本光标在对应位置

点击联系人或者联系方式整栏,首先也是作为选中状态,光标依然要在最后面

当点击文本中间,光标移动到文本中间.

Android----EditText 光标仿ios,默认在最后面,点击整栏也在最后面,点击文本光标在对应位置

针对这个需求,按网上的方法,更改了一部分的判断

 

public class LastInputEditText extends android.support.v7.widget.AppCompatEditText {

    public LastInputEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setSelection(getText().length());
    }

    public LastInputEditText(Context context, AttributeSet attrs) {
        this(context, attrs, android.support.v7.appcompat.R.attr.editTextStyle);
    }

    public LastInputEditText(Context context) {
        this(context, null);
    }

    @Override
    protected void onSelectionChanged(int selStart, int selEnd) {
        super.onSelectionChanged(selStart, selEnd);
        //光标首次获取焦点是在最后面,之后操作就是按照点击的位置移动光标
        if (isEnabled() && hasFocus() && hasFocusable()) {
            if (selStart==0){
                setSelection(getText().length());
            }else {
                setSelection(selEnd);
            }
        } else {
            setSelection(getText().length());
        }

    }
}

 

亲测可用,直接采用此自定义控件即可.