33

ユーザーがカーソル位置をどこにも動かさないようにする方法を探しています。カーソルは常に現在のEditText値の末尾に留まる必要があります。それに加えて、ユーザーはEditTextで何も選択できないようにする必要があります。EditTextを使用してAndroidでそれを実現する方法を知っていますか?

明確にするために:ユーザーはテキストを挿入できる必要がありますが、最後にのみ挿入できます。

4

5 に答える 5

52

私も同じ問題を抱えていました。これは私のために働いた:

public class CustomEditText extends EditText {

    @Override
    public void onSelectionChanged(int start, int end) {

        CharSequence text = getText();
        if (text != null) {
            if (start != text.length() || end != text.length()) {
                setSelection(text.length(), text.length());
                return;
            }
        }

        super.onSelectionChanged(start, end);
    }

}
于 2012-10-19T20:49:00.240 に答える
8

これを試して:

mEditText.setMovementMethod(null);
于 2014-06-12T09:04:24.057 に答える
7

これにより、カーソルのフォーカスがテキストの最後の位置にリセットされます

editText.setSelection(editText.getText().length());

このメソッドは、タッチ時のカーソル移動を無効にします

public class MyEditText extends EditText{

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
         final int eventX = event.getX();
         final int eventY = event.getY();
         if( (eventX,eventY) is in the middle of your editText)
         {
              return false;
         }
         return true;
    }
}

そして、xml属性のいずれかを使用できます

Android:cursorVisible

またはJava関数

setCursorVisible(boolean)

edittext の点滅カーソルを無効にする

于 2012-06-23T15:04:11.550 に答える
1

これを行う最善の方法は、独自のCustomEditTextクラスを作成し、関連するメソッドをオーバーライド/変更することです。ここでソースコードを見ることができEditTextます。

public class CustomEditText extends EditText {

    @Override
    public void selectAll() {
        // Do nothing
    }

    /* override other methods, etc. */

}
于 2012-06-23T16:17:30.487 に答える