8

私のアプリでは、ユーザーがラジオボタンで行う選択に応じて、情報を収集するために 1 つまたは 2 つの編集テキスト (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 に答える