Android 如何在单击EditText时保留EditText的选定文本

Android 如何在单击EditText时保留EditText的选定文本,android,android-edittext,Android,Android Edittext,我正在开发一个应用程序,它的外观和功能必须类似于Android设备的默认浏览器。所以我有一个EditText用于输入url 所以我想让它像用户点击EditText时一样工作,想在EditText中选择整个tet,并让它像在浏览器的搜索栏中一样被选中 我在谷歌上搜索了很多,但没有找到任何解决办法 我可以使用 txtSearchURL.setOnClickListener(new View.OnClickListener() { @Override publ

我正在开发一个应用程序,它的外观和功能必须类似于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());
        }

    });
但它仅显示选定的一秒钟,而不使其处于选定状态

所以,请帮助实现它


如有任何帮助,我们将不胜感激。

您无需按程序执行此操作。在布局XML中,将以下内容添加到编辑文本中:

android:selectAllOnFocus="true"
例如


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


我也使用了它,但它只在活动第一次打开时才选择文本。但并非每次视图恢复焦点时,againIt都会选择文本。你应该检查编辑文本是否曾经失去焦点,以便在你点击它时可以重新获得它(包括文本选择)。我也使用过它,但它只在“活动”第一次打开时才选择文本。但不是againI只是测试了它,它通过xml和编程都能完美地工作。如果在代码中找不到它不起作用的原因,您可以尝试通过
editText.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){editText.setSelectAllOnFocus(true);}}}在每次单击时强制它(脏解决方案)
还要确保使用原始键盘应用程序(而不是自定义键盘)进行测试。评论中的建议看起来确实很肮脏。。通过调查组件的焦点行为,找到问题的根本原因。总有一些工作要做,但你永远不会得到干净、可维护和健壮的代码。是的。。问题似乎是自定义ActionBar中的EditText并没有获得焦点。。。
<EditText android:id="@+id/editText"
          android:selectAllOnFocus="true"
          android:hint="@string/hint_text"

          android:layout_width="fill_parent"
          android:layout_height="wrap_content"/>
editText.setSelectAllOnFocus(true);