【问题标题】:How to have fixed cursor position for EditText?如何为 EditText 固定光标位置?
【发布时间】:2016-02-09 03:22:48
【问题描述】:

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

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

我不介意答案是用 XML 还是 Java。

谢谢你:)

编辑:如果我必须使用 setSelection,有没有办法检测何时单击 EditText 框?这样当用户单击 EditText 时,我可以将光标设置回末尾。

【问题讨论】:

  • 提供一些示例代码会很有用
  • @Fungucide 我不知道这是否会有所帮助,因为我只是在寻找一个通用答案,如果您的活动中有一个简单的 EditText 元素,您将如何做到这一点。跨度>

标签: java android xml android-edittext


【解决方案1】:

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

【讨论】:

【解决方案2】:

你可以应用这个技巧,这对我有用。 只需从 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());
            }
        });
}

希望对你有所帮助。

【讨论】:

  • setOnClickListener 非常适合我,非常感谢 :)
  • @jeremy 很高兴我能帮上忙 :)
  • @AnujSharma 我有两个编辑文本,我只想修复第一个编辑文本,这样我可以适应它吗?
  • @HardikParmar 据我所知,如果您有两个 edittext 对象,那么您可以检查您的第一个 edittext,就是这样。
【解决方案3】:

在 EditText 框的末尾插入。

您只需将重力设置在右侧

android:gravity="right"

有没有办法禁用用户更改 通过单击 EditText 框来定位光标位置?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多