使用两个不同但非常相似的布局会导致android:ImeOptions =“ActionNext”无效

时间:2014-09-17 23:19:20

标签: android android-xml imeoptions

我有两个布局,一个用于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" />

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我设法通过一些黑客来解决这个问题。 FrequencyEnterField是微调器或EditText的容器,具体取决于设置。如果是EditText,我手动将代码中的操作指定为IME_ACTION_NEXT,

mFreqEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

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