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

时间:2014-07-26 16:23:07

标签: android android-edittext selection

我有一个包含许多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的文本?

2 个答案:

答案 0 :(得分:0)

Itzik Samara(“使用setSelectAllOnFocus(boolean)”)在原始问题的评论中回答了问题 - 这个问题已被添加,因此可以将问题标记为已回答

答案 1 :(得分:0)

你可以在这里做三件事:

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

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

E.setSelectAllOnFocus(true);

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

E.selectAll();

如果您更愿意使用XML布局:

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

android:selectAllOnFocus="true" 

希望有所帮助!