2011-12-27 54 views
1

我有多行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> 

在EditText上,輸入後 'Enter' 鍵,系統建立重點如下:

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

但我想:

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

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

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

如何解決這個問題?

回答

1

我剛剛在EditTexts中水平移動焦點的問題相同。在我的情況下,我只有幾個EditText,所以我將android:imeOptions="actionNext"添加到每個EditTexts xml,然後將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; 
      } 
     }; 
    } 

這是相當不錯的解決方案。

+1

我不明白這個解決方案如何能夠從一行中的最後一個編輯文本跳轉到下一行的第一個編輯文本(我們正在討論列表視圖)? – 2012-03-05 09:53:45

1

一種方法是手動將ime標題設置爲「Next」(可以在xml或Java中完成),然後手動覆蓋該活動的onClick監聽器並監聽正在按下的「next」鍵。然後,您可以在要切換焦點的EditText上撥打requestFocus()。老實說,雖然這將是一個相當麻煩,但我知道它會工作。希望這是更好的方法。

0

提供從左至右,從上到下的EditText上ListView中,你可以使用下面的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> 

它爲我,希望它可以幫助你。

相關問題