如何为EditText固定光标位置?

时间:2016-02-09 03:22:48

标签: java android xml android-edittext

我不希望用户在EditText框的中间插入任何内容。我只想让用户点击EditText框以显示键盘,并插入EditText框的末尾。

有没有办法禁用用户在单击EditText框时更改光标位置的能力?

如果答案是用XML或Java完成的,我不介意。

谢谢:)

编辑:如果我必须使用setSelection,有没有办法检测单击EditText框的时间?这样我就可以在用户点击EditText时将光标设置回到最后。

3 个答案:

答案 0 :(得分:1)

使用setSelection设置光标位置。但这不会锁定插入点。如果您创建自定义视图并且子类EditText覆盖setSelectionChanged以强制进行不同的更改,您可以判断是否有人更改了选择。您可能还想覆盖onTextChanged以验证发生的任何更改都不会破坏您的规则。

答案 1 :(得分:0)

你可以应用这个技巧,这对我有用。 只需从edittext中禁用光标,然后在其单击侦听器上添加将光标保持在最右侧的代码。

这是我尝试的代码。

<EditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:text="12"
        android:background="@color/white"
        android:padding="@dimen/activity_margin_10"
        /> 

Java代码

EditText mEditText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        mEditText = (EditText)findViewById(R.id.edit);  // Initialzation of Edittext
        mEditText.setSelection(mEditText.getText().length()); // After initialization keep cursor on right side
        mEditText.setCursorVisible(false);  // Disable the cursor.

        /*
        Add Click listener and on put your code that will keep cursor on right side
         */
        mEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mEditText.setSelection(mEditText.getText().length());
            }
        });
}

希望它会对你有所帮助。

答案 2 :(得分:0)

  

要在EditText框的末尾插入。

您只需要将重力设置为正确的

android:gravity="right"
  

有没有办法禁用用户更改的功能   单击EditText框的光标位置?

您可以使用xml属性android:cursorVisible="false"或java函数setCursorVisible(false)