Android EditText:触摸全选文本,当用户开始输入时清除。

18

我有一个编辑框在我的应用程序中。当用户触摸编辑框时,应选择整个文本,并在开始输入文本时清除文本。这类似于浏览器地址栏的行为。是否有方法实现这个功能?请帮帮我。


请问您为什么想要这样做? - Ishtiaq
2
在启用键盘后,使用android:hint="要显示的文本"。 - Zala Janaksinh
你可以使用 这个方法 来选择编辑框内的所有文本。 - kittu88
@Asfaq:当用户开始输入时,我想清除先前的数据。 - user1767260
6个回答

32

1
谢谢。这会选择文本,但当我再次触摸编辑文本以显示键盘时,文本不会被清除。 - user1767260

6

在焦点上调用EditText.setSelectAllOnFocus(boolean selectAllOnFocus)以选择所有文本。

为您的EditText设置单击侦听器,并在onClick中调用edittext.selectAll();


在你的EditText上设置一个点击监听器,然后在onClick中调用edittext.selectAll()。 - Ron
谢谢,这比答案更好,因为你到达活动时可能不想让ET立即聚焦。但是,我没有在XML中执行onClick,而是在我的ET活动中设置了一个onClickListener,然后将selectAll()方法放置在它的onClick()方法上,在你点击它时只会选择所有内容。 - Azurespot

3
在您的main.xml文件中添加属性:
android:selectAllOnFocus="true"

然后所有的文本都将被选中,当用户输入任何内容时,它将被删除。

1
您可以使用属性android:hint而不是android:text,这样就可以得到您想要的内容,而无需编写特殊代码。

0

这是有效的,所有文本都将被选中,当用户输入内容时,它将被删除。

             editText.setSelectAllOnFocus(true);

            editText.requestFocus();
            editText.postDelayed(new Runnable() {
                @Override
                public void run() {
                    InputMethodManager keyboard = (InputMethodManager) catalougeJobDetailFragment
                            .getActivity().getSystemService(
                                    Context.INPUT_METHOD_SERVICE);
                    keyboard.showSoftInput(commentEt, 0);
                }
            }, 20);

0

您可以使用android:selectAllOnFocussetSelectAllOnFocus(boolean)在EditText中选择所有文本。

当选择所有文本时,请设置一个标志。然后,在EditText上使用addTextChangedListener方法检测文本更改,并使您的类实现或定义一个实现TextWatcher类的内部类。

在此观察器类方法中,检查您设置的标志以指示是否选择了所有文本。如果为true,则执行TextView.setText("")。这将清除文本。现在再次将标志设置为false,以便随后的文本更改不会导致文本被清除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接