0

我有两种布局,一种用于纵向,另一种用于横向,将信息传递到下一个字段。两者使用相同的源代码和相似的 XML 代码。其中一个显示我期望的“下一步”按钮,另一个显示“完成”按钮。FrequencyEnterField 是一个 FrameLayout。一个有效的使用这个 XML 代码:

        <com.kd7uiy.hamfinder.dialogs.FrequencyEnterField
            android:id="@+id/freq"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:singleLine="true"
            android:imeOptions="actionNext"
            android:nextFocusDown="@+id/modeSelect" />

还有一个不使用此代码的:

        <com.kd7uiy.hamfinder.dialogs.FrequencyEnterField
            android:id="@+id/freq"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:ems="10"
            android:imeOptions="actionNext"
            android:singleLine="true" 
            android:nextFocusDown="@+id/modeSelect" />

不同之处在于水平的在屏幕上均匀划分空间,而垂直的不需要这样做。知道发生了什么吗?

4

2 回答 2

0

我建议使用android:nextFocusForward而不是android:nextFocusDown. 它似乎nextFocusForward用于 IME 的“下一步”按钮。由于布局的解释方式,它可能恰好在一个方向上工作。

于 2014-09-17T23:23:38.890 回答
0

我设法通过一些技巧让它工作。FrequencyEnterField 是微调器或 EditText 的容器,具体取决于设置。如果是 EditText,我手动将代码中的操作指定为 IME_ACTION_NEXT,

mFreqEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

这似乎可以解决问题......

于 2014-09-17T23:25:34.470 回答