如果单击自定义按钮,如何将光标从一个EditText移到另一个EditText并移回第一个编辑文本



我基本上是在开发一个小型数学应用程序,在一个活动中,他们会遇到加减法等问题。用户必须在edittext中填写我在同一活动中创建的0-9、点、斜线和退格按钮的自定义按钮的答案。现在我喜欢添加向上和向下按钮,这样当按下向上按钮时,光标必须向上移动编辑文本,反之亦然。

这是我使用的示例代码

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/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some string of text"
        />
    <EditText 
        android:id="@android:id/et2"
        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 et1;
        TextView et2;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        et1 = (EditText) findViewById(android.R.id.et1);
        et2 = (EditText) findViewById(android.R.id.et2);
        Button button = (Button) findViewById(android.R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Selection.setSelection((Editable) et2.getText(), et1.getSelectionStart());
                et2.requestFocus();
            }
        });
    }
}

您可以创建一个EditText数组和一个包含当前位置的变量,默认值为0,即第一个文本框。然后,如果用户按下向上按钮,如果变量大于0,则设置位置-1,然后从数组中获取文本框对象并调用focus()。下面是一段示例代码,它不准确,但应该让你开始

List<EditText> textfields = null;
int currentTextFieldPosition = 0;
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    textfields = new ArrayList<EditText>();
    textfield1 = (EditText)findViewById(R.id.textfield1);
    .....
    textfields.add(textfield1);
    ......
}
protected OnClickListener mBtnUpClickListener = new OnClickListener()
{
    public boolean onClick()
    {
        if (currentTextfieldPosition > 0)
        {
            currentTextfieldPosition--;
            textfields.get(currentTextFieldPosition).focus()
        }
    }
}

最新更新