如何实现点击屏幕其他地方让edittext失去焦点

如何实现点击屏幕其他地方让edittext失去焦点,第1张

方法就是:让EditText所在的layout获得焦点

给layout注册OnTouchListener监听器

直接使用 requestFocus() 无法获取焦点,焦点依然在EditTtext上

先调用下面这两个方法:

setFocusable(true);

setFocusableInTouchMode(true);

再调用 requestFocus() 就可获取焦点

relativesetOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

relativesetFocusable(true);

relativesetFocusableInTouchMode(true);

relativerequestFocus();

return false;

}

});

1、首先自定义布局

2、把自定义布局放入dialog中显示

3、通过自定义布局查找对应的edittext组件

final View DialogView = a inflate ( Rlayoutloand, null);//1、自定义布局

//创建对话框

AlertDialog dlg = new AlertDialogBuilder(loandthis)

setTitle("登录框")

setView(DialogView)//设置自定义对话框的样式,2、自定义布局放入dialog中显示

setPositiveButton("登陆", //设置"确定"按钮

new DialogInterfaceOnClickListener() //设置事件监听{

public void onClick(DialogInterface dialog, int whichButton){editText1 =(EditText) DialogViewfindViewById(RideditText1);

editText2 =(EditText) DialogViewfindViewById(RideditText2);//3、过自定义布局查找对应的edittext组件

String id = editText1getText()toString();

String password = editText2getText()toString();

Android新启动Activity,dialog或者其他窗体中中包含EditText, 新启动的activity的焦点默认在EditText上,这是android系统会d出软键盘,挤压activity本来的界面,影响美观。

因此最好在新窗体创建时,最好在onCreate()方法中将焦点放在另一个view上 view使用requestFocus()焦点,但是如果让button或者textView之类控件直接使用requestFocus()方法,则无法获取焦点,焦点会依然在editText上。

只能在使用View的requestFocus()方法之前调用下面2个方法,view才可获取焦点:

viewsetFocusable(true);

然后调用 requestFocus()即可获取焦点。

如果EditText位于布局底部的话,因为上面还有若干个组件,所有即使设置了Focusable属性得不到焦点,所以需要把前面的组件全部设置Focusable=“false”,这样就可以了。

这三个属性必须同时设置:

private EditText passwde = ;

passwdesetFocusable(true);

passwdesetFocusableInTouchMode(true);

passwderequestFocus();

EditTextsetOnFocusChangeListener(new ViewOnFocusChangeListener() {  

      

    @Override  

    public void onFocusChange(View v, boolean hasFocus) {  

        if(hasFocus){//获得焦点  

              

        }else{//失去焦点  

            

        }  

    }             

});

//让编辑框d出来,并显示对谁进行评论

commentEditTextsetFocusable(true);

commentEditTextsetFocusableInTouchMode(true);

commentEditTextrequestFocus();

//打开软键盘

InputMethodManager imm = (InputMethodManager)getActivity()getSystemService(ContextINPUT_METHOD_SERVICE);

immtoggleSoftInput(0, InputMethodManagerHIDE_NOT_ALWAYS);

      //让编辑框d出来,并显示对谁进行评论

        commentEditTextsetFocusable(true);

        commentEditTextsetFocusableInTouchMode(true);

        commentEditTextrequestFocus();

        //打开软键盘

        InputMethodManager imm = (InputMethodManager)getActivity()getSystemService(ContextINPUT_METHOD_SERVICE);

        immtoggleSoftInput(0, InputMethodManagerHIDE_NOT_ALWAYS);         上面的代码,能够让EditText获取焦点,并d出软键盘,供输入文本内容。特别适用于评论列表之类的场景。

以上就是关于如何实现点击屏幕其他地方让edittext失去焦点全部的内容,包括:如何实现点击屏幕其他地方让edittext失去焦点、android 自定义的dialog,edit text 不能获得焦点,d出软键盘。、Android View如何获取焦点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9403638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存