2012-02-22 6 views
1

今はonFocusListenerを使用して、カーソルをEditText文字列の末尾に自動的に移動します。これは、ボックスがフォーカスされているときにはうまく動作しますが、ユーザーが文字列内の位置をタップすると、カーソルが移動してカーソルがそこに移動します。私はFocus(Touch、Click)に加えて他のメソッドを実装しようとしましたが、カーソルが最後まで短く動いていましたが、ユーザーがクリックした場所に素早く移動しました。ユーザーがカーソル位置をクリックして自動的に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

+0

歓迎兄弟 – Triode

+0

なぜ私はclassCast例外を取得するのか分からない! – MSaudi

関連する問題