我有一个Scrollview作为父视图,我已经放置了一些线性布局的混合物 设计中没有probs,但在测试应用程序时,我发现光标的移动存在问题,我的目的是将焦点从一个编辑文本移动到另一个位于adjecent(水平)的文本,但是当我点击底部的输入按钮,它将焦点移动到垂直定位的下一个编辑文本(我知道,这是默认的)。
即使我尝试实现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;
}
});
请让我知道,如何将焦点从一个文本框移动到另一个文本框放置在水平方向。上面的代码将焦点移动到垂直位于的文本框。我试着搜索谷歌很多,但没有结果。
为了更清晰,我也分享了这个屏幕。
希望我能在这里得到更好的回应。
谢谢
答案 0 :(得分:3)
public abstract void onFocusChange (View v, boolean hasFocus){
if(!hasFocus){
secondEditText.requestFocus();
}
}
但在向上滚动时失败,即使在这种情况下第二个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;
}
}
}