我有两个布局,一个用于portait,另一个用于landscape,它将信息传递给下一个字段。两者使用相同的源代码和类似的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" />
不同之处在于,水平分布在屏幕上均匀划分空间,而垂直分区则不需要这样做。知道发生了什么事吗?
答案 0 :(得分:0)
我建议使用android:nextFocusForward
代替android:nextFocusDown
。似乎nextFocusForward
用于IME“下一步”按钮。由于布局的解释方式,它可能恰好在一个方向上工作。
答案 1 :(得分:0)
我设法通过一些黑客来解决这个问题。 FrequencyEnterField是微调器或EditText的容器,具体取决于设置。如果是EditText,我手动将代码中的操作指定为IME_ACTION_NEXT,
mFreqEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
这似乎可以解决问题......