Android:选择所有关注EditField的文本

时间:2011-06-17 22:49:49

标签: android text edit

我正在尝试让Android在获得焦点时选择EditText字段中的所有文本。我在布局中使用了这个属性(在两个字段上):

android:selectAllOnFocus="true"

我不确定这是否相关,但要将光标移到第一个可编辑字段(之前还有一个禁用字段),我正在使用以下命令:

quizStartNum.setFocusable(true);
quizStartNum.requestFocus();

但是,当首次显示布局时光标确实移动到所需的字段,文本不会突出显示;相反,光标结束于文本的左侧,即默认行为。如果我通过触摸移动到第二个字段,则根据需要选择所有文本。然后,如果我再次通过触摸它移回第一个字段,也会完全选择文本。我想从一开始就有这种行为。有没有办法做到这一点?

6 个答案:

答案 0 :(得分:3)

如果android:selectAllOnFocus="true"不起作用,请尝试在该特定EditText上调用setSelectAllOnFocus(true)

如果这也不起作用,这是之前SO帖子的另一种解决方法。

EditText dummy = ... 

dummy.setOnFocusChangedListener(new OnFocusChangedListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});

答案 1 :(得分:1)

我有一个类似的问题,android:selectAllOnFocus="true"对我不起作用。 原因是我以编程方式要求将焦点显示在EditText上,然后再显示它。因此,如果要在AlertDialog中对EditText执行此操作,请确保在请求将焦点移至EditText之前将其显示。

答案 2 :(得分:1)

EditText在显示后应聚焦。

下面的锻炼对我有用,

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    // Set Input Methode
    getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}

@Override
public void onStart() {
    super.onStart();

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            Dialog dialog = getDialog();
            if (dialog != null) {
            // Set Layout 
            dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

            // Set Cancelable False
            setCancelable(false);

            // Set Focus Here <------------------------
            uiET_myTextView.requestFocus();
            }            
        }
    });
}

答案 3 :(得分:0)

尝试删除焦点命令。它们不是必需的,Android应该自动关注第一个字段吗?

答案 4 :(得分:0)

我会参考this older post

如果您只是希望EditText显示提示(“此处有什么内容”),您可能需要使用Android的XML属性hintlink)。

答案 5 :(得分:0)

我还注意到,使用android:selectAllOnFocus =“ true”似乎不起作用,我使用鼠标在仿真器中选择EditText,但是如果我用手指触摸它,就好像在电话上一样,它可以工作。如果您的计算机上没有触摸屏,则可能必须在物理设备上安装应用程序才能对其进行测试。 在这种情况下,Android Studio可能无法识别鼠标