为EditTexts设置nextFocus不起作用

时间:2014-08-19 19:35:54

标签: android android-softkeyboard

我对nextFocus...的{​​{1}}属性有疑问。首先,我很难理解我应该使用哪个EditText参数。当我在我的软键盘上按nextFocus...时,它正在寻找下一个Next,但我该怎么知道它是向下看还是向上看还是在哪里?我仍然需要指定下一个要聚焦的View的ID,那么为什么还要为方向烦恼呢?

无论如何,这是我的布局: http://imgur.com/na1xn2s

当我编辑Stacks时,我希望下一个EditText成为Rest,但它不起作用。这是我的代码:

EditText

当按下“下一步”按钮时,它仍然会显示“休息”的“stacks = (EditText) dialogView.findViewById(R.id.calc_stacks_edit); rest = (EditText) dialogView.findViewById(R.id.calc_rest_edit); stacks.setImeOptions(EditorInfo.IME_ACTION_NEXT); stacks.setNextFocusDownId(R.id.calc_rest_edit); rest.setImeOptions(EditorInfo.IME_ACTION_DONE); 个数量”。有什么问题?

2 个答案:

答案 0 :(得分:12)

从XML中将这些属性设置为堆栈。

  android:nextFocusForward="@+id/rest"
    android:inputType="textNoSuggestions"
    android:imeOptions="actionNext"

答案 1 :(得分:0)

我遇到了同样的问题,没有一个解决方案对我有用。我决定以编程方式集中精力。为此,我创造了一个扩展乐趣。

/*
 * Sets manuel focus forward
 */
fun EditText.manualFocusForward(nextFocusView: View) {
    setOnEditorActionListener { _, actionId, event ->
        if (actionId == EditorInfo.IME_ACTION_DONE
            || actionId == EditorInfo.IME_ACTION_NEXT
            || actionId == EditorInfo.IME_ACTION_GO
            || (event != null && event.keyCode == KeyEvent.KEYCODE_ENTER)
        ) {
            nextFocusView.requestFocus()
            true
        } 

        false        
    }
}

用法:

   inputViewCardNumber.editTextInput.manualFocusForward(inputViewExpDate.editTextInput)