如何获取EditText的光标位置

如何获取EditText的光标位置,第1张

tc = wxTextCtrl()pop = wxPopupWindow()x, y = tcPositionToXY(tcGetInsertionPoint)pos = wxPoint(x,y)popMove(pos)

没有找到好的方法。试了下,以下可以看看:

重写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());
  }
 }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12841853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存