2012-09-19 21 views
8

W mojej aplikacji potrzebuję wyświetlić jeden lub dwa editeksty do zbierania informacji (e1 i e2), w zależności od wyboru, który użytkownik zrobi za pomocą przycisku radiowego. Odbywa się to poprzez ustawienie stanu widoczności editekstu na GONE i działa dobrze.Zmień EditText IME_ACTION programowo

Moim problemem jest to, jak programowo ustawić IME_ACTION z "zrobione" na "next" w każdym przypadku, a mianowicie:

1) Tylko e1 jest widoczny - zestaw IME_ACTION E1 do GOTOWE

2) e1 i e2 są widoczne - ustaw IME_ACTION z e1 na NEXT i IME_ACTION z e2 na DONE.

Używam Androida: minSdkVersion = "4" i android: targetSdkVersion = "16" i testowania na urządzeniu z Androidem 2.2.

Oto mój plan:

<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> 

Oto mój kod:

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; 

    } 
    } 
    }); 
+0

Masz jakieś rozwiązanie? –

Odpowiedz

6
e2.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Overrid 
    public boolean onEditorAction(TextView v, int actionId,KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
       //your code  
       } 
      } 
)}; 
+0

Przykro mi, nie rozumiem twojego pomysłu. Potrzebuję sposobu na zmianę z IME_ACTION_DONE na IME_ACTION_NEXT, w zależności od tego, ile editekstów jest widocznych. – Pedro

1

W przypadku ktoś ląduje tutaj: EditText.setImeOptions(EditorInfo.IME_ACTION_NEXT); i bóg pomóc jeśli to TouchWiz :)

także , Zauważyłem problemy, gdy EditText nie może się przełączyć, jeśli ma fokus, więc upewnij się, że zamknąłeś ke yboard i unieruchomienie ostrości

+0

To nie działa. Time zmian Dinta – Sudhasri

+0

@Sudhasri jakie są specyfikacje urządzenia, które testujesz? – AllDayAmazing

+0

Próbowałem tego w Samsung Galaxy Note 2. – Sudhasri

Powiązane problemy