旋转器没有得到焦点

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我在一个活动中使用了4个EditText字段和2个spinners。 这些组件的顺序是2 EditText,然后是2个旋钮,然后是2个EditText字段。 当我将焦点(在软键盘的下一个按钮的帮助下)从EditText转移到微调器时,Spinner没有获得焦点并且焦点被转移到放置在微调器后面的下一个EditText字段时发生问题。 我在微调器上使用了requestfocus(),但它不起作用。 我如何确保微调器获得焦点?

提问于
用户回答回答于

  1. 将Spinner对象设置在顶部(在onCreate方法内),以确保代码首先被执行
  2. 使用以下内容: Spinner s1 = (Spinner) findViewById(R.id.spinner1); s1.setFocusable(true); s1.setFocusableInTouchMode(true); s1.requestFocus();
用户回答回答于

在微调控件之前的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);
}

扫码关注云+社区