2013-02-13 118 views
3

我有一个android xml布局,当用户按下键盘上的下一个按钮时,我想指定字段的焦点顺序。android:nextFocusForward在布局中被忽略

文档说,那android:nextFocusForward = TARGET_ID应该这样做。但是我们所有的测试设备都忽略了它。一些运行2.3的旧设备和运行4.1的新Nexus设备。

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <EditText 
      android:textCursorDrawable="@null" 
      android:id="@+id/firstname" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="6dp" 
      android:layout_marginTop="6dp" 
      android:layout_weight="1" 
      android:singleLine="true" 
      android:background="#00000000" 
      android:textColor="#000" 
      android:nextFocusForward="@+id/lastname" 
      android:padding="2dp"/> 

     <EditText 
      android:textCursorDrawable="@null" 
      android:id="@+id/lastname" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="6dp" 
      android:layout_marginTop="6dp" 
      android:layout_weight="1" 
      android:background="#00000000" 
      android:singleLine="true" 
      android:textColor="#000" 
      android:padding="2dp"/> 
    </LinearLayout> 

我在做什么错在这里?只是无法弄清楚。非常感谢!

回答

9

尝试nextFocusDown以及。我不完全理解这些规则,但似乎行为取决于EditTexts的布局,以及光标位置相对于下一个字段的位置。

+0

正是这样做了! – Sigi 2013-02-26 12:58:49

0

我试着设置nextFocusDown,nextFocusForward,nextFocusRight,但是他们都没有工作。我通过监听编辑器操作并以编程方式将焦点设置为下一个EditText来实现它。

mFirstName.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      mLastName.requestFocus(); 
      return true; 
     } 
    });