2012-02-22 94 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