在获得焦点时选择Android EditView的文本?

我有一个包含多个EditView的视图。 当选择一个时,我希望选中所有文本,而不是只显示编辑光标。 我尝试的是这样的:

EditText E = new EditText(this);
E.setRawInputType(InputType.TYPE_CLASS_NUMBER);
E.setImeOptions(EditorInfo.IME_ACTION_DONE);
E.setText("Some Text");

E.setOnFocusChangeListener(
    new OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus)
            {
                // Set the selection to the entire text
                EditText E2 = (EditText) v;
                E2.setSelection(0, E2.getText().length());
            }
        }
    }
);

当我选择EditText时,使用hasFocus = true调用onFocusChange,但文本未被选中; 相反,编辑光标就像通常那样出现。

另外,当我在setSelection调用之前包含这一行时:

E2.setText("Changed");

它将文本设置为“已更改”,但仍不会选择文本。

另外,如果在最初的E.setText调用之后立即使用setSelected,则将选择具有初始焦点的EditText中的文本。

如何在onFocusChangeListener.onFocusChange调用中选择EditView的文本?


Itzik Samara回答的问题(“使用setSelectAllOnFocus(布尔)”)在原始问题的评论 - 这是添加的,所以问题可以被标记为回答


你可以在这里做三件事:

如果您喜欢以编程方式执行此操作:

1)在调用OnFocusChangeListener()之前,您可以调用setSelectAllOnFocus(Boolean),例如:

E.setSelectAllOnFocus(true);

2)在hasFocus条件下,你可以说

E.selectAll();

如果你更愿意使用你的XML布局:

3)您可以在布局中的EditText字段上应用setSelectAllOnFocus,如:

android:selectAllOnFocus="true" 

希望有所帮助!

链接地址: http://www.djcxy.com/p/24209.html

上一篇: Selecting an Android EditView's text when it gets focus?

下一篇: In EditText, popup a dialog when clicking on specific subset of text