方法就是:让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如何获取焦点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)