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;
}
}
});
Masz jakieś rozwiązanie? –