我有一个包含许多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的文本?
答案 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"
希望有所帮助!