重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
中EditText获得焦点后马上又失去了有以下几种情况:
成都创新互联主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站建设、做网站、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
EditText处在一个可以滚动的控件中,例如ListView等,当得到焦点后软件键盘会弹出,这个时候滚动控件会重绘,因此会失去焦点。
EditText注册了焦点事件,得到焦点后将焦点转向了其它控件。
EditText禁止了获取焦点。
EditText初始化时候失去焦点:只需要在布局文件中设置属性
android:focusable="false"
也可以在代码中由开发者根据需求设置一定的条件,当条件满足后,动态的设置EditText失去焦点。
示例代码:
EditText et = (EditText) findViewById(R.id.et);
et.clearFocus();
et.setFocusable(false);
这种控制EditText的操作是Android程序中不经常用到的。多出现于EditText的输入监听回调方法中。
在网上找了好久,有点 监听软键盘事件,有点 调用 clearFouse()方法,但是测试了都没有! xml中也找不到相应的属性可以关闭这个默认行为
1 解决之道:在EditText的父级控件中找一个,设置成
Android:focusable="true"
android:focusableInTouchMode="true"
这样,就把EditText默认的行为截断了!
LinearLayout
style="@style/FillWrapWidgetStyle"
android:orientation="vertical"
android:background="@color/black"
android:gravity="center_horizontal"
android:focusable="true"
android:focusableInTouchMode="true"
ImageView
android:id="@+id/logo"
style="@style/WrapContentWidgetStyle"
android:background="@drawable/dream_dictionary_logo"
/
RelativeLayout
style="@style/FillWrapWidgetStyle"
android:background="@drawable/searchbar_bg"
android:gravity="center_vertical"
EditText
android:id="@+id/searchEditText"
style="@style/WrapContentWidgetStyle"
android:background="@null"
android:hint="Search"
android:layout_marginLeft="40dp"
android:singleLine="true"
/
/RelativeLayout
/LinearLayout
2 还有一个方法也可以非常简单的实现这个功能:
EditText对象的clearFocus();
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editMsgView.getWindowToken(), 0);(关闭软键盘。。。)
3 更多问题解决办法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载。下面是截图。
[img]1、在EditText的父布局中的布局文件中设置这两行代码
android:focusable="true"
android:focusableInTouchMode="true"
2、在代码中设置EditText焦点通过setFocusable()和setFocusableInTouchMode() 不过这个好像不怎么管用
3、如果你是不是想跳转到有EditText的界面时自动弹出软键盘的话 可以在功能清单文件(AndroidManifest.xml) 中的相对应activity节点中设置软键盘弹出模式
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
1. 在activity layout xml文件中,EditText的前面定义:
LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0px" android:layout_height="0px" /
2. 在EditText中添加nextFocusUp与nextFocusLeft
EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:nextFocusUp="@id/editText" android:nextFocusLeft="@id/editText" /