Android:不允许用户在 EditText 中选择光标位置?

use*_*767 1 java android

现在我使用 onFocusListener 自动将光标移动到 EditText 字符串的末尾。当框被聚焦时,这工作得很好,但是,一旦聚焦,如果用户点击字符串中的某个位置,光标就会移动到那里。我尝试过实现除焦点(触摸、单击)之外的其他方法,当我这样做时,光标会短暂移动到末尾,但然后快速移动到用户单击的位置。有没有办法阻止用户单击光标位置并自动设置 setSelection(EditText.getText().length())?

Tri*_*ode 5

/**
 * 
 */
package com.sb.skeleton;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;

/**
 * @author rajesh
 *
 */
public class SBEditText extends EditText {

    /**
     * @param context
     */
    public SBEditText(Context context) {
        super(context);
    }

    /**
     * @param context
     * @param attrs
     */
    public SBEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * @param context
     * @param attrs
     * @param defStyle
     */
    public SBEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void setSelection(int start, int stop) {
        // TODO Auto-generated method stub
        Log.d(SkeletonAppActivity.TOSS, "setSelection");
        super.setSelection(start, stop);
    }


    @Override
    public void setSelection(int index) {
        // TODO Auto-generated method stub
        Log.d(SkeletonAppActivity.TOSS, "selectionChanged");
        super.setSelection(index);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub

        setSelection(getText().length());
        super.onDraw(canvas);
    }

}
Run Code Online (Sandbox Code Playgroud)

此类确保当 EditText 内容发生更改时,它将光标设置到文本末尾。