微调不重点

我在一个活动中使用了4个EditText字段和2个spinners。 这些组件的顺序是2 EditText ,然后是2个EditText ,然后是2个EditText字段。

当我从EditText传递焦点(在软键盘的下一个button的帮助下)到微调器,微调器没有得到焦点,焦点被转移到下一个EditText字段放置在微调器后面。

我已经使用微调器上的requestfocus(),但它不工作。

我如何确保微调器的焦点?

Solutions Collecting From Web of "微调不重点"

我设法find一个解决scheme,然后重新定位我的微调。 在微调控件之前的EditText中,添加这个监听器:

 editTextBefore.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_NEXT) { hideKeyboard(); textView.clearFocus(); spinner.requestFocus(); spinner.performClick(); } return true; } }); 

您还需要添加这些线到能够微调获得焦点:

 spinner.setFocusable(true); // can be done in XML preferrable 

我的hideKeyboard函数只是我想添加的一个视觉细节,所以键盘被隐藏了:

 private void hideKeyboard() { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } 

希望我在这个棘手的问题帮助。
标志InputMethodManager.HIDE_NOT_ALWAYS可以在文档中find 。

谢谢,我已经解决了以下几点:

  1. 我将Spinner对象设置在最上面(在onCreate方法中),以确保我的代码首先被执行
  2. 我使用了以下内容:

     Spinner s1 = (Spinner) findViewById(R.id.spinner1); s1.setFocusable(true); s1.setFocusableInTouchMode(true); s1.requestFocus(); 

这是在黑暗中拍摄的,但是尝试在微调器上设置可调焦的属性(以XML或代码的forms,无论以何种方式进行)。

http://developer.android.com/reference/android/view/View.html#attr_android:focusable

编辑:另外,看到这个问题: 无法pipe理要求重点微调

我只是有同样的问题。 我使用nextFocusDown / Up / Left / Right属性解决了这个问题。

 <EditText android:id="@+id/tPhone" ... android:focusableInTouchMode="true" android:focusable="true" android:nextFocusDown="@+id/sCountry"/> <Spinner android:id="@+id/sCountry" .... android:focusableInTouchMode="true" android:focusable="true" android:nextFocusUp = "@+id/tPhone" android:nextFocusDown="@+id/tStreet"/> <EditText android:id="@+id/tStreet" ... android:visibility="gone" android:focusableInTouchMode="true" android:focusable="true" android:nextFocusUp = "@+id/sCountry"/> 

但为什么这是必要的…打败了我。