【问题标题】:How to keep selected text of EditText when Edittext is clicked单击Edittext时如何保留EditText的选定文本
【发布时间】:2014-07-11 18:57:52
【问题描述】:

我正在开发一个应用程序,它的外观和功能必须类似于 Android 设备的默认浏览器。所以我有一个 EditText 用于输入 url 。

所以我想让它像用户点击 EditText 时一样工作,想要在 EditText 中选择整个 tet 并让它像在浏览器的搜索栏中一样被选中。

我搜索了很多,但没有找到任何解决方案。

我可以使用

选择整个文本
    txtSearchURL.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ((EditText) v).setSelection(0, txtSearchURL.getText()
                    .toString().length());
        }

    });

但它只显示它被选中了一秒钟而不是让它被选中。

所以请帮助实现它。

任何帮助将不胜感激。

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

    您不需要以编程方式执行此操作。在您的布局 XML 中,将以下内容添加到您的 EditText:

    android:selectAllOnFocus="true"
    

    例如

    <EditText android:id="@+id/editText"
              android:selectAllOnFocus="true"
              android:hint="@string/hint_text"
    
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"/>
    

    【讨论】:

    • 我也使用过它,但它只会在活动打开时第一次选择文本。但不会再次
    • 每次视图重新获得焦点时都会选择文本。您应该检查 EditText 是否曾经失去焦点,以便在您点击它时可以重新获得它(包括文本选择)。
    【解决方案2】:

    如果您想以编程方式执行此操作(例如,仅当用户长按 EditText 时):

    editText.setSelectAllOnFocus(true);
    

    【讨论】:

    • 我也使用过它,但它只会在活动打开时第一次选择文本。但不会再次
    • 我刚刚对其进行了测试,它通过 xml 和以编程方式完美运行。如果您没有找到它在您的代码中不起作用的原因,您可以尝试通过editText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText.setSelectAllOnFocus(true); }}); 在每次点击时强制它(肮脏的解决方案)另外确保使用原始键盘应用程序进行测试(而不是使用自定义键盘)。跨度>
    • 评论中的建议确实看起来很肮脏。通过调查组件的焦点行为找到问题的根本原因。总有一些变通方法,但你永远不会以这种方式获得干净、可维护和健壮的代码。
    • 是的..似乎问题是自定义ActionBar内部的EditText没有获得焦点......
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多