Android 安卓:选择编辑字段焦点上的所有文本

Android 安卓:选择编辑字段焦点上的所有文本,android,text,edit,Android,Text,Edit,我试图让Android在EditText字段获得焦点时选择所有文本。我在布局中使用此属性(在两个字段上): 我不确定这是否相关,但要将光标移到第一个可编辑字段(前面还有一个禁用字段),我将使用以下命令: quizStartNum.setFocusable(true); quizStartNum.requestFocus(); 但是,当第一次显示布局时,光标确实移动到所需的字段,文本不会高亮显示;相反,光标会停在文本的左侧,这是默认行为。如果通过触摸移动到第二个字段,则会根据需要选择所有文本。然

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

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

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

但是,当第一次显示布局时,光标确实移动到所需的字段,文本不会高亮显示;相反,光标会停在文本的左侧,这是默认行为。如果通过触摸移动到第二个字段,则会根据需要选择所有文本。然后,如果我移回第一个字段,再次触摸它,文本也会被完全选中。我希望从一开始就有正确的行为。有什么方法可以做到这一点吗?

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

我将参考


如果您只想让您的
EditText
显示提示(对于“此处的内容”),您可能需要使用Android的XML属性
hint
()。

如果
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();
    }
});

我有一个类似的问题,android:selectAllOnFocus=“true”对我不起作用。
原因是我在编辑文本显示之前,通过编程请求对其进行聚焦。因此,如果在AlertDialog中对EditText执行此操作,请确保在请求对EditText进行聚焦之前显示它。

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();
            }            
        }
    });
}
@覆盖
已创建公用void onview(@NonNull视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
//设置输入法
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u ADJUST\u RESIZE);
}
@凌驾
public void onStart(){
super.onStart();
new Handler().post(new Runnable()){
@凌驾
公开募捐{
Dialog=getDialog();
如果(对话框!=null){
//集合布局
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容);
//将可取消设置为False
可设置可取消(假);

//在这里设置焦点我还注意到android:selectAllOnFocus=“true”似乎不起作用,我用鼠标在模拟器中选择EditText,但如果我用手指触摸它,就像在手机上一样,它就起作用了。如果你的计算机上没有触摸屏,你可能必须在物理设备上安装你的应用程序来测试它。
Android Studio在这种情况下可能无法识别鼠标

他希望将第二个字段作为默认字段进行聚焦。运气不好。Android:selectAllOnFocus=“true”不起作用,setSelectAllOnFocus(true)不起作用,上述解决方法也不起作用。下面是我用来编译它的代码:quizStartNum.setOnFocusChangeListener(new View.OnFocusChangeListener(){@Override public void onFocusChange(视图v,布尔arg1){//TODO自动生成的方法存根if(v.hasFocus()){((EditText)v)。selectAll();}}});我刚刚遇到了类似的问题。此外,我无法使用
InputMethodManager#showSoftInput(View,int)
显示此编辑文本的软键盘,而
InputMethodManager#切换SoftInputFromWindow(IBinder,int,int)
工作正常。
@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();
            }            
        }
    });
}