我有一个滚动视图作为父视图,在其中我放置了一些混合的线性布局,设计中没有问题,但在测试应用程序时,我发现光标移动有问题,我的意图是将焦点从一个编辑文本移动到另一个位于形容词(水平方向)的编辑文本,但当我单击底部的enter按钮时,它会将焦点移动到垂直定位的下一个编辑文本(我知道,这是默认的)。
即使我尝试实现EditorAction,仍然存在相同的问题。
这是我用来将焦点从一个编辑文本移动到另一个编辑文本的代码。
// Adding the special listener, to be invoked when the action is performed on the editor
firstEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// TODO Auto-generated method stub
if(actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_NEXT) {
// Move the focus to the next edittext(secondEditText)
secondEditText.requestFocus();
}
return false;
}
});
请让我知道,如何将焦点从一个文本框移动到另一个水平方向放置的文本框。上面的代码将焦点移到垂直位置的文本框中。我试着在谷歌上搜索了很多次,但没有结果。
为了更清晰,我也分享了那个屏幕。
希望我能在这里得到更好的回应。
谢谢
发布于 2011-09-27 05:09:17
public abstract void onFocusChange (View v, boolean hasFocus){
if(!hasFocus){
secondEditText.requestFocus();
}
}
但在向上滚动coz时失败,即使在这种情况下第二个EditText获得焦点,而不是上面的视图。
一个更好的解决方案可能是,
GestureDetector.OnGestureListener lis = new GestureDetector.OnGestureListener(){
@Override
public boolean onDown(MotionEvent arg0) {
if(firstEditText.hasFocus){
secondEditText.requestFocus();
return true;
}
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}
}
https://stackoverflow.com/questions/7564410
复制相似问题