EditText忽略ImeActionLabel

时间:2014-05-07 21:19:46

标签: android android-edittext

使用Samsung Galaxy Ace,当我实例化editText时,我尝试在Samsung Galxy SII上设置一个当前被忽略的自定义标签(没有第三方键盘)相同的行为 这是我用于设置选项

的代码
eTHomeShare = (EditText) v.findViewById(R.id.eTHomeShare);
eTHomeShare.setImeActionLabel(getString(R.string.home_done),
            EditorInfo.IME_ACTION_UNSPECIFIED);

这是EditText的xml定义

           <EditText 
                android:id="@+id/eTHomeShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:imeActionLabel="@string/done"
                android:imeOptions="actionSend"
                android:inputType="text" />

编辑1

CommonsWare建议用于editText的新xml

           <EditText 
                android:id="@+id/eTHomeShare"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical" />

正如你所看到我刚从xml中删除了2行,而在我片段的onCreateView中我使用了

 eTHomeShare.setImeActionLabel(getString(R.string.home_done),
            EditorInfo.IME_ACTION_SEND);

现在我看不到“完成/发送”按钮,(顺便说一句,我总是处理纵向),而是输入符号,如果我删除了initViews上的行并让原始的xml定义,那么结果相同。

编辑2 愚蠢的错误行:android:inputType =&#34; text&#34;已从xml中删除,只需使用initViews上的那个就可以正常工作。

1 个答案:

答案 0 :(得分:4)

有许多方法可以尝试控制操作按钮上的内容,包括:

  • imeOptions
  • imeActionLabel
  • setImeActionLabel()

其中哪些将起作用将取决于输入法编辑器(IME,a.k.a。,软键盘)的实现。理想情况下,每个IME都会尊重所有这些...至少在单独使用时。

然而:

  • 指定多个行为时的行为未定义

  • 即使拥有操作按钮也不需要任何IME,更不用说尊重您对该按钮上特定标题的请求

通常,我建议在一个位置指定操作按钮标签。我的猜测是imeOptions最有可能被尊重,所以如果您想要的标签是标准选项之一(例如,&#34;发送&#34;),请使用它。