2011-12-27 12 views
1

私は、いくつかのEditTextを持つ複数のListViewを持っています。 EditTextでKeyCode_ListViewの次のEditTextに入力

<?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> 

、 'Enter' キーを入力した後、次のようにシステムがフォーカスを確立:

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

をしかし、私はしたい:

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

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

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

どのようにこの問題を解決しますか?

答えて

1

私はちょうどEditTextsでフォーカスを水平方向に動かすのと同じ問題がありました。私の場合は、いくつかのEditTextがあるので、各EditTexts xmlにandroid:imeOptions="actionNext"を追加してから、各EditTextにOnEditorActionListenerを追加しました。コードサンプル:

_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; 
      } 
     }; 
    } 

これは、この問題に対する合理的な解決策です。

+1

このソリューションを使用して、行の最後の編集テキストから次の行の最初の編集テキストにジャンプすることはできません(私たちはリストビューについて話しています)。 –

1

手動で「次へ」を手動で設定することもできます(xmlまたはJavaで実行できます)。手動でそのアクティビティのonClickリスナーをオーバーライドし、「次へ」キーが押されたかどうかを聞きます。次に、フォーカスを切り替えることを希望するEditTextでrequestFocus()と呼ぶことができます。正直なところ、これはかなり面倒ですが、うまくいくことはわかっています。うまくいけば、より良い方法があります。

0

リストビューでの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> 

それは私のために動作し、それはあなたを助け願っています。

関連する問題