【问题标题】:Use tab to change focus in an android application使用选项卡在 android 应用程序中更改焦点
【发布时间】:2013-01-09 22:00:27
【问题描述】:

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

【问题讨论】:

标签: android focus


【解决方案1】:

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

如果你想以编程方式使用它(不使用 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() 中,在 setDownFocus()

之前调用 setUpView()

【讨论】:

  • @Sourav 这将由系统处理,您无需编写 java 代码。你是怎么写你的xml的?你能贴出来吗?
【解决方案2】:

您可以在布局中使用此 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 />

【讨论】:

    【解决方案3】:

    我认为您想拦截 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"
    />
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多