Android将光标从一个EditText移动到另一个EditText?

问题描述 投票:3回答:5

我知道很多时候都会问这些类型的问题。但仍然没有人给出完美答案。

我有问题 :

我想从EditText1 **移动到另一个** EditText2。我已经检测到editText1但是如何将光标移动到editText2。

总之,我不得不将光标位置从一个editText1直接移动到另一个EditText2。

android cursor android-edittext cursor-position
5个回答
7
投票

我遇到了这种类型的问题,并找到了解决方案如下。

这里我有两个editText,

如果我按“a”,我的光标将移至下一步。我使用下面的代码来做这件事。

 final EditText editText = (EditText) findViewById(R.id.editText1);

       editText.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(View v , int keyCode , KeyEvent event) {

                  EditText editText2 = (EditText) findViewById(R.id.editText2);

                // TODO Auto-generated method stub
                if (keyCode == event.KEYCODE_A) {

                    Selection.setSelection((Editable) editText2.getText(),editText.getSelectionStart());
                    editText2.requestFocus();
                }

                return true;
            }
        });

如果您遇到任何有关此问题的错误,请与我们联系。如果我的回答对您有帮助,请接受并评价为upvote。


1
投票

这是一个有效的例子,希望这会有所帮助。

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText 
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some string of text"
        />

    <EditText 
        android:id="@android:id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some string of text"
        />

    <Button 
        android:id="@android:id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        />

</LinearLayout>

类:

public class Example extends Activity {
    TextView text1;
    TextView text2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        text1 = (EditText) findViewById(android.R.id.text1);
        text2 = (EditText) findViewById(android.R.id.text2);
        Button button = (Button) findViewById(android.R.id.button1);

        button.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Selection.setSelection((Editable) text2.getText(), text1.getSelectionStart());
                text2.requestFocus();
            }
        });
    }
}

1
投票

设置onKeyListener以检测按下的每个键上按下的键检查您的条件以及何时满足您的条件设置edittext属性edittext2.requestFocus();


1
投票

为此,您需要做的就是...将以下两个属性添加到xml中的EditText标记,除了最后一个EditText(如果您将其添加到最后一个EditText,则光标控件将再次转到第一个)按键盘上的Enter / next时的EditText)

<EditText . . android:singleLine="true" android:imeOptions="actionNext" . . />

希望这可以帮助


0
投票

我已经测试了所有以前的代码段,并发现所有代码都正常工作。但我发现用正确的edittext对象调用“requestFocus()”也是有效的。根据问题,ans可以是:

edittext2.requestFocus();

这对我来说很好。如果我错了,请纠正我。

© www.soinside.com 2019 - 2024. All rights reserved.