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