使光标焦点来编辑文本android
我有一个Android的列表视图与成千上万的项目。 其中的每个Item都包含一个带有默认文本的EditText 。
listview加载数据成功后。 我点击一个项目 - 第一次,光标焦点到选定的EditText>软输入键盘出现>键盘推动列表视图向上滚动,选定的EditText失去了焦点! 由于键盘显示在屏幕上,这不会再发生。 我不知道
我已通过此事件检查过它:
setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
}
}
所以这里的问题是,在我失去了我的焦点之前,如何重新聚焦或将光标的焦点移到准确的位置
我认为你应该请求关注你的EditText onClickListener。
someEditText.setOnClickListener(new OnClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
someEditText.requestFocus();
}
});
但没有看到你的代码,我只是猜测。
经过数周的研究,我有我自己的解决方案,但非常忙碌,为每个人都知道更新。
该解决方案是创建一个自定义滚动 视图,以涵盖edittexts的列表视图 。
在滚动视图中,重写像这样的事件。 而已。
有了这个,在未来,如果我们希望我们的Edittext滚动平滑或控制聚焦
public class VerticalScrollview extends ScrollView {
public VerticalScrollview(Context context) {
super(context);
init();
}
public VerticalScrollview(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public VerticalScrollview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init(){
//setFillViewport(true);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
onTouchEvent(ev);
switch (action)
{
case MotionEvent.ACTION_DOWN:
Log.i("VerticalScrollview", "onInterceptTouchEvent: DOWN super false");
break;
case MotionEvent.ACTION_MOVE:
return false; // redirect MotionEvents to ourself
case MotionEvent.ACTION_CANCEL:
Log.i("VerticalScrollview", "onInterceptTouchEvent: CANCEL super false" );
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false" );
return false;
default: Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action ); break;
}
return false;
// onTouchEvent(ev);
// float startY=0;
// if (ev.getAction() == MotionEvent.ACTION_DOWN) startY = ev.getY();
// return (ev.getAction() == MotionEvent.ACTION_DOWN) && (Math.abs(startY - ev.getY()) > 50);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction());
return true;
}
}
链接地址: http://www.djcxy.com/p/4145.html
上一篇: make a cursor focus to edittext android
下一篇: You need to use a Theme.AppCompat theme (or descendant) with this activity