2010-08-10 155 views
10

假設用戶已經將一些文本寫入了一個文本,然後再觸摸屏幕上的其他位置,導致光標位置改變:如何確定新的光標位置?EditText的光標位置

回答

24

簡單的版本:

myEditText.getSelectionStart(); 

如果你想對事件作出反應,你可以嘗試

myEditText.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     // view is myEditText here 
    } 
}); 

event允許按下並釋放區分。

EditText也有一個setOnClickListener()這可能是值得一看的。

編輯: 我忘了提及onSelectionChanged(int selStart, int selEnd)其中selEnd等於selStart如果位置改變。

+2

澄清:onSelectionChanged()必須的EditText被子類覆蓋是有用的。 OnTouch事件僅在用戶真正觸摸屏幕時發生。當用戶觸摸屏幕或通過某些物理輸入時,可觸發OnClick事件。 D-pad中心,軌跡球點擊等。 – greg7gkb 2012-06-21 18:43:08

2

最好最安全的方法是使用TextWatcher

 @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
       int cursorIndex = start + 1; 
     }