2012-02-22 185 views
1

现在我使用onFocusListener自动将光标移动到EditText字符串的末尾。这个框在聚焦时工作正常,但是,如果用户点击字符串中的位置,一旦聚焦,光标就会移动到那里。当我尝试时,除了焦点(触摸,点击)之外,我尝试过实现其他方法,光标短暂地移动到最后,但很快移动到用户点击的位置。有没有一种方法可以防止用户点击光标位置,并自动setSelection(EditText.getText()。length())?Android:禁止用户在EditText中选择光标位置?

回答

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 内容,将光标移动到文本的结尾。

+0

是的,这正是我所需要的!非常感谢你,完美工作。 – user1143767 2012-02-22 19:12:53

+0

欢迎兄弟 – Triode 2012-02-22 19:32:35

+0

我不知道为什么我会得到classCast异常! – MSaudi 2013-12-03 09:16:37