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

Java Android:不允许用户在EditText中选择光标位置?,java,android,Java,Android,现在我使用onFocusListener自动将光标移动到EditText字符串的末尾。当框被聚焦时,这可以很好地工作,但是,一旦聚焦,如果用户点击字符串中的某个位置,光标就会移动到该位置。除了焦点(触摸、单击)之外,我还尝试了其他方法。当我这样做时,光标会短暂移动到末尾,但很快就会移动到用户单击的位置。是否有一种方法可以防止用户单击光标位置并使其自动设置Selection(EditText.getText().length()) 此类确保当EditText发生更改时 内容它会将光标设置到文本的末

现在我使用onFocusListener自动将光标移动到EditText字符串的末尾。当框被聚焦时,这可以很好地工作,但是,一旦聚焦,如果用户点击字符串中的某个位置,光标就会移动到该位置。除了焦点(触摸、单击)之外,我还尝试了其他方法。当我这样做时,光标会短暂移动到末尾,但很快就会移动到用户单击的位置。是否有一种方法可以防止用户单击光标位置并使其自动设置Selection(EditText.getText().length())

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

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


是的,这正是我需要的!非常感谢你们,工作得很好。我不知道为什么我会得到classCast异常!这对我也很管用。但是,您能否解释一下,为什么在文本视图的文本内容发生更改时,会立即调用重写onDraw方法而不是重写onDraw方法,并且当用户来回移动光标时,这会让人很快感觉到光标始终位于视图的末尾。可能还有其他方法会给你同样的结果,但需要看看这个。是的,这正是我需要的!非常感谢你们,工作得很好。我不知道为什么我会得到classCast异常!这对我也很管用。但是,您能否解释一下,为什么在文本视图的文本内容发生更改时,会立即调用重写onDraw方法而不是重写onDraw方法,并且当用户来回移动光标时,这会让人很快感觉到光标始终位于视图的末尾。可能有其他方法会给你同样的结果,但需要注意这一点。
/**
 * 
 */
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);
    }

}