2012-06-23 39 views
0

我是新来的android编程。 我想使用TAB(在键盘中)将焦点更改为下一个编辑文本框。 请告诉我该怎么做。使用标签来改变在Android应用程序的焦点

+0

可能重复的[你可以在XML布局中设置“标签顺序”吗?](http://stackoverflow.com/questions/5048586/can-you-set-tab-order-in-xml-layout) – FoamyGuy

回答

1

如果你想之前编程使用(不使用XML属性)

private void setUpView(){ 
    editText1=(EditText)findViewById(R.id.editText1); 
    editText2=(EditText)findViewById(R.id.editText2); 
    editText3=(EditText)findViewById(R.id.editText3); 
} 
private void setDownFocus(){ 
    editText1.setNextFocusDownId(R.id.editText2); 
    editText2.setNextFocusDownId(R.id.editText3);// you can give focus to any id 
    editText3.setNextFocusDownId(R.id.editText1); 
} 

的onCreate()调用setupView函数()使用XML属性android:nextFocusDown在所有的EditText

setDownFocus()

+0

好的我做到了。谢谢,以及在java代码中做什么? – Sourav301

+0

@Sourav这个将由系统处理,你不需要编写java代码。 你如何写xml?你可以发布吗? –

0

您可以在您的布局上使用此XML

<EditText 
      android:id="@+id/editTextName" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:inputType="textPersonName" 
      android:hint="Enter Name"/> 

     <requestFocus /> 
0

我认为你想拦截TAB键并跳转到屏幕上的下一个元素。 我所做的是扩展EditText并重写“onKeyDown”方法,以便将焦点发送到下一个元素。 这里是我的简单扩展的EditText:

package my.package; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.KeyEvent; 
import android.widget.EditText; 

public class TabExitEditText extends EditText { 

    public TabExitEditText(Context context) { 
     super(context, null); 
    } 

    public TabExitEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public TabExitEditText(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_TAB) { 
      focusSearch(FOCUS_RIGHT).requestFocus(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

} 

在布局您只需设置

<my.package.TabExitEditText 
    ... 
    android:nextFocusRight="@id/nextRightFocusId" 
/> 

您可以自定义使用其他重点方向顺序。