将carat / cursor从edittext1设置为edittext2

时间:2011-02-02 10:59:51

标签: android android-edittext

我已经搜索了如何执行此操作,但找不到任何解决方案。在这里,我有edittext1和edittext2,而carat / cursor位于edittext1,然后我按下软键盘中的“Next / Enter”键,carat / cursor必须位于edittext2中。当我按下“下一步/回车”键但未在edittext2中移动克拉/光标时,下面的片段收到了该事件。

    edittext1.setOnKeyListener(new View.OnKeyListener() 
    {       
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) 
        {
            if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
            {
                Editable e = edittext2.getText();
                Selection.setSelection(e,e.length());
            }
            return false;
        }
    });

任何输入都将受到高度赞赏。感谢。

2 个答案:

答案 0 :(得分:3)

您不能在XML中使用android:nextFocusDownandroid:nextFocusUp,而不是在代码中执行此操作吗?以下是一些参考文献:

修改
根据您接受的答案,看起来您有一个可行的解决方案,但我认为我也可以使用XML路由。所以这是布局元素的工作版本:

<AutoCompleteTextView 
    android:id="@+id/autoCompleteTextViewRecipient"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:completionThreshold="1"
    android:inputType="text"
    android:maxLines="1"
    android:hint="To"
    android:imeOptions="actionNext"
    android:nextFocusDown="@+id/editTextComposeMessage"
    android:nextFocusUp="@+id/editTextComposeMessage"/>
<EditText
    android:id="@+id/editTextComposeMessage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:imeOptions="actionNext"
    android:nextFocusDown="@+id/autoCompleteTextViewRecipient"
    android:nextFocusUp="@+id/autoCompleteTextViewRecipient"/>

差异在于AutoCompleteTextView现在有nextFocusDownEditTextnextFocusUp,而且imeOptions都设置为actionNext

答案 1 :(得分:1)

尝试使用此: if(event.getKeyCode()== KeyEvent.KEYCODE_ENTER) {   edittext2.requestFocus();
}

光标移动到edittext2。