将焦点从一个EditText移动到另一个(水平方向) - Android

时间:2011-09-27 05:01:24

标签: android android-edittext

我有一个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;
        }
    });

请让我知道,如何将焦点从一个文本框移动到另一个文本框放置在水平方向。上面的代码将焦点移动到垂直位于的文本框。我试着搜索谷歌很多,但没有结果。

为了更清晰,我也分享了这个屏幕。

希望我能在这里得到更好的回应。

谢谢

enter image description here

1 个答案:

答案 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;
            }

        }
}