ユーザーがカーソル位置をどこにも移動できないようにする方法を探しています。カーソルは常に現在のEditText値の末尾に留まる必要があります。さらに、ユーザーはEditTextで何も選択できないようにする必要があります。 Android EditTextを使用してそれを実現する方法はありますか?
明確にするために、ユーザーはテキストを挿入できる必要がありますが、最後にのみ挿入できます。
私も同じ問題を抱えていました。これは私のために働いてしまいました:
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);
}
}
これを試して:
mEditText.setMovementMethod(null);
これにより、カーソルのフォーカスがテキストの最後の位置にリセットされます
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(ブール)
edittextの点滅カーソルを無効にする
これを行う最良の方法は、独自のCustomEditText
クラスを作成し、関連するメソッドをオーバーライド/変更することです。 ソースコード のEditText
はこちらで確認できます。
public class CustomEditText extends EditText {
@Override
public void selectAll() {
// Do nothing
}
/* override other methods, etc. */
}