0

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

4

3 回答 3

1

android:nextFocusDown在所有 EditText 中使用 Xml 属性

如果您想以编程方式使用它(不使用 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()之前setDownFocus()

于 2012-06-23T03:09:27.327 回答
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 />
于 2012-06-23T03:39:55.930 回答
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"
/>

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

于 2013-01-09T14:00:27.223 回答