没有找到好的方法。试了下,以下可以看看:
重写EditText,自定义的控件里面复写invalidateDrawable方法。
EditText实例里面去用callback的方式去监听每次点击编辑内容后的响应,在回调函数里面去实现
强制使光标移动到最后,比如点击到c后面时候,强制跳转到最后。
以下是部分代码:
public class MyEditText extends EditText{public int index;
public CurGetWhere mCurGetWhere;
public MyEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyEditText(Context context, AttributeSet attrs){
super(context, attrs);
}
@Override
public void invalidateDrawable(Drawable drawable) {
// TODO Auto-generated method stub
superinvalidateDrawable(drawable);
index = SelectiongetSelectionEnd(getText());
if(mCurGetWhere != null){
mCurGetWheregetEditTextCur(index);
}
}
public int getEditTextCurCallback(CurGetWhere mCurGetWhere) {
// TODO Auto-generated method stub
thismCurGetWhere = mCurGetWhere;
return thisindex;
}
}
实例里面使用如下:
final MyEditText mMyEditText = (MyEditText)findViewById(Ridedittext);mMyEditTextgetEditTextCurCallback(new CurGetWhere() {
@Override
public int getEditTextCur(int indext) {
// TODO Auto-generated method stub
CharSequence text = mMyEditTextgetText();
if (text instanceof Spannable) {
Spannable spanText = (Spannable)text;
SelectionsetSelection(spanText, textlength());
}
return 0;
}
});int screenWidth = getWindowManager()getDefaultDisplay()getWidth(); // 屏幕宽(像素,如:480px)
int screenHeight = getWindowManager()getDefaultDisplay()getHeight(); // 屏幕高(像素,如:800p)
Loge(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
可以获取到屏幕的宽度和高度。
设置光标可以
EditTextsetFocusable(true);
EditTextsetFocusableInTouchMode(true);
EditTextrequestFocus();
EditTextrequestFocusFromTouch();
希望可以帮到你,如果有不懂得可以继续HI我
如图:
在 /res/drawable 文件夹下创建 edit_cursor_colorxml :
布局文件中设置 EditText 的 textCursorDrawable 属性为 edit_cursor_color :
public void setEditTextCursorLocation(EditText editText) {CharSequence text = editTextgetText();
if (text instanceof Spannable) {
Spannable spanText = (Spannable) text;
SelectionsetSelection(spanText, textlength());
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)