KeyCode_Enter到ListView中的下一个EditText

时间:2011-12-27 14:34:13

标签: android listview input focus android-edittext

我有一些带有一些EditText的多行ListView。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/edit_tail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

    <EditText
        android:id="@+id/edit_cost"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

   <EditText
        android:id="@+id/edit_rest"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

</LinearLayout>

在EditText中,输入“Enter”键后,系统按以下方式建立焦点:

[EditText]  [EditText]  [EditText]
     ↓           ↓          ↓
[EditText]  [EditText]  [EditText]
     ↓           ↓          ↓
[EditText]  [EditText]  [EditText]
     ↓           ↓          ↓
    ...         ...        ...

但我想:

     [EditText] -> [EditText] -> [EditText] ->

   -> [EditText] -> [EditText] -> [EditText] ->

  ->  [EditText] -> [EditText] -> [EditText]

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

一种方法是手动将ime标题设置为“Next”(可以在xml或Java中完成),然后手动覆盖该活动的onClick侦听器并侦听按下的“下一个”键。然后你可以在EditText上调用你想要将焦点切换到的requestFocus()。老实说虽然这会很麻烦,但我知道它会起作用。希望有更好的方法。

答案 1 :(得分:1)

我遇到了在EditTexts中水平移动焦点的问题。在我的例子中,我只有几个EditTexts,所以我在每个EditTexts xml中添加了android:imeOptions="actionNext",然后将OnEditorActionListener添加到每个EditText。代码示例:

_heightEdit.setOnEditorActionLister(getGotoNextListener(_weightEdit));
private OnEditorActionListener getGotoNextListener(final EditText next) {
        return new OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_NEXT) {
                    next.requestFocus();
                    return true;
                }
                return false;
            }
        };
    }

这是解决这个问题的合理解决方案。

答案 2 :(得分:0)

要为ListView中的EditText提供从左到右和从上到下的聚焦,您可以使用以下XML选项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/edit_1"
        android:nextFocusRight="@+id/edit_2"
        android:imeOptions="actionNext"
        />

    <EditText
        android:id="@+id/edit_2"
        android:nextFocusRight="@+id/edit_3"
        android:imeOptions="actionNext"
        />

   <EditText
        android:id="@+id/edit_3"
        android:nextFocusRight="@+id/edit_4"
        android:imeOptions="actionNext"
        />

   <EditText
        android:id="@+id/edit_4"
        android:nextFocusDown="@+id/edit_1"
        android:imeOptions="actionNext"
        />

</LinearLayout>

它对我有用,希望对你有帮助。