8

在我的应用程序中,我需要显示一个或两个编辑文本来收集信息(e1 和 e2),具体取决于用户将通过单选按钮进行的​​选择。这是通过将 edittext 的可见性状态设置为 GONE 来完成的,并且工作正常。

我的问题是如何以编程方式将 IME_ACTION 从“完成”设置为“下一个”,即:

1) 只有 e1 可见 - 将 e1 的 IME_ACTION 设置为 DONE

2) e1 和 e2 可见 - 将 e1 的 IME_ACTION 设置为 NEXT,将 e2 的 IME_ACTION 设置为 DONE。

我正在使用 android:minSdkVersion="4" 和 android:targetSdkVersion="16" 并在 Android 2.2 设备上进行测试。

这是我的布局:

<EditText
android:id="@+id/e1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:singleLine="true"
android:imeOptions="actionDone"
android:hint="@string/sh15"
android:textColor="@android:color/black"
android:textSize="@dimen/s">
</EditText>         
<EditText
android:id="@+id/e2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:singleLine="true"
android:imeOptions="actionDone"
android:hint="@string/sh16"
android:textColor="@android:color/black"
android:textSize="@dimen/s">
</EditText> 

这是我的代码:

RadioGroup r= (RadioGroup) dialog.findViewById(R.id.rg);
  r.setOnCheckedChangeListener(new OnCheckedChangeListener() 
  {
   public void onCheckedChanged(RadioGroup group, int checkedId) 
   {
    switch(checkedId)
    {
     case R.id.rb1: //show one edittext
         e1.setVisibility(View.VISIBLE);             
         e2.setVisibility(View.GONE);
         e1.setImeOptions(EditorInfo.IME_ACTION_DONE);
     break;
     case R.id.rb2: //show two edittext
         e1.setVisibility(View.VISIBLE);
         e2.setVisibility(View.VISIBLE);
         e1.setImeOptions(EditorInfo.IME_ACTION_NEXT);
         e2.setImeOptions(EditorInfo.IME_ACTION_DONE);
     break;

    }
   }
  });  
4

2 回答 2

6
e2.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Overrid
    public boolean onEditorAction(TextView v, int actionId,KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
                //your code    
              }
          }
)};
于 2012-09-19T11:44:45.230 回答
1

万一有人降落在这里:EditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);如果是 TouchWiz,上帝会帮助你 :)

另外,我注意到当 EditText 有焦点时无法切换时出现问题,因此请确保关闭键盘并取消焦点

于 2015-05-14T19:11:35.500 回答