【问题标题】:Using two different, but very similar, layouts causes android:ImeOptions="ActionNext" to not work使用两个不同但非常相似的布局会导致 android:ImeOptions="ActionNext" 不起作用
【发布时间】:2014-09-17 23:19:19
【问题描述】:

我有两种布局,一种用于纵向,另一种用于横向,将信息传递到下一个字段。两者使用相同的源代码和相似的 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" />

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

【问题讨论】:

    标签: android android-xml imeoptions


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      mFreqEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
      

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

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2019-11-28
        • 2012-09-03
        • 2019-07-21
        • 2011-06-08
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        • 2013-09-04
        相关资源
        最近更新 更多