Android:禁止用户在EditText中选择光标位置?

时间:2012-02-22 04:27:43

标签: java android

现在我使用onFocusListener自动将光标移动到EditText字符串的末尾。当盒子聚焦时,这可以正常工作,但是,一旦聚焦,如果用户点击字符串中的位置,光标就会移动到那里。我尝试在Focus(Touch,Click)之外尝试实现其他方法,光标短暂移动到最后,然后快速移动到用户点击的位置。有没有办法可以阻止用户单击光标位置并自动设置setSelection(EditText.getText()。length())?

1 个答案:

答案 0 :(得分:4)

/**
 * 
 */
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);
    }

}
  

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