EditTextView跟Adapter使用聚焦问题
2014-11-02 16:33
253 查看
日前使用ListView+Adapter+EditText时,碰到两个EditText聚焦问题,记录如下:
1、进入Activity,ListView中第一个EditText立刻聚焦。
原因:EditText初始化设定
解决方法:在EditText的父布局中,设置focusable=true,focusableInTouchMode=true
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView keyView = new TextView(context);
keyView.setText(key);
linearLayout.addView(keyView);
final EditText valueView = new EditText(context);
valueView.setMinimumWidth(200);
//解决初始化Activity时,EditText立刻聚焦的问题
linearLayout.setFocusable(true);
linearLayout.setFocusableInTouchMode(true);
linearLayout.addView(valueView);
//解决点击一次EditText之后,焦点转移的问题
valueView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
FORCUS_KEY=key;
return false;
}
});
if ( key.equals(FORCUS_KEY))
valueView.requestFocus();
keyViewList.add(keyView);
valueViewList.add(valueView);
inputView.addView(linearLayout);
2、点击EditText,此时弹出输入法,但是EditText没有聚焦,需要再点击一次EditText
原因:由于输入法弹出,因此adapter会刷新页面,重新调用getView,此时如果没有在getView中EditText手动设置requestFocus,那么默认EditText不聚焦
解决方法:在点击EditText时,记录需要聚焦的EditText,在getView中手动调用requestFocus,案例同上,在touch时间中,记录一个Key值,当记录的Key值为当前EditText的值时,手动调用RequestFocus
1、进入Activity,ListView中第一个EditText立刻聚焦。
原因:EditText初始化设定
解决方法:在EditText的父布局中,设置focusable=true,focusableInTouchMode=true
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView keyView = new TextView(context);
keyView.setText(key);
linearLayout.addView(keyView);
final EditText valueView = new EditText(context);
valueView.setMinimumWidth(200);
//解决初始化Activity时,EditText立刻聚焦的问题
linearLayout.setFocusable(true);
linearLayout.setFocusableInTouchMode(true);
linearLayout.addView(valueView);
//解决点击一次EditText之后,焦点转移的问题
valueView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
FORCUS_KEY=key;
return false;
}
});
if ( key.equals(FORCUS_KEY))
valueView.requestFocus();
keyViewList.add(keyView);
valueViewList.add(valueView);
inputView.addView(linearLayout);
2、点击EditText,此时弹出输入法,但是EditText没有聚焦,需要再点击一次EditText
原因:由于输入法弹出,因此adapter会刷新页面,重新调用getView,此时如果没有在getView中EditText手动设置requestFocus,那么默认EditText不聚焦
解决方法:在点击EditText时,记录需要聚焦的EditText,在getView中手动调用requestFocus,案例同上,在touch时间中,记录一个Key值,当记录的Key值为当前EditText的值时,手动调用RequestFocus
相关文章推荐
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- RecyclerView.Adapter的某个item中EditText的输入后所有列表中Editetext全部被修改的问题
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- 关于android开发ListView的Adapter的convertView中有EditText的问题
- 使用KeyboardView导致EditText光标不显示的问题
- 【问题】在TabHost以外的EditText不能使用硬件盘输入数字
- Android中findViewById()h获取EditText 空指针问题
- 当TextView或者EditView的内容发生变化时,其他组件及时给予响应时,我们可以使用TextWatcher来实现。
- 常用控件的使用方法--(TextView/EditText/Button/Menu) -计算器代码
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- 使用TextView/EditText应该注意的地方
- 使用TextView/EditText应该注意的地方
- 使用TextWatcher实现EditText与TextView同步
- 使用TextView/EditText应该注意的地方
- 使用TextView/EditText应该注意的地方
- Android中findViewById()h获取EditText 空指针问题
- EditText和TextView出现中文、英文等string串的排版问题
- EditText 输入法问题(setContentView切换两个view,抢焦点问题)
- 使用android.widget.SimpleAdapter.ViewBinder的一点问题!
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等