2011-09-13 15 views
48

Bardzo dziwna sytuacja, mam ten kod, który ma sprawić, że pole EditText będzie nieedytowalne, jeśli SpnSelected.equals ("Service") i będzie można je edytować ponownie, jeśli coś innego.EditText.setFocusable (false); nie można ustawić na true. :/

final EditText etAdd = (EditText)dialogAddTextView.findViewById(R.id.etSymb); 

    if (SpnSelected.equals("Service")) 
    { 
     etAdd.setFocusable(false); 
     TextView tvInfo = (TextView)dialogAddTextView.findViewById(R.id.tvAddTextInfo); 
    } 
    else 
    { 
     etAdd.setFocusable(true); 
     TextView tvInfo = (TextView)dialogAddTextView.findViewById(R.id.tvAddTextInfo); 
    } 

To czyni go nieedytowalny ok, ale to nie przynosi możliwość edycji z powrotem etAdd.setFocusable (true);

Jakieś pomysły, co z tym zrobić? Dzięki! :)

+0

Czy nie "setEnabled (true/false)" byłoby bardziej odpowiednie? –

+0

działa. tylko sprawia, że ​​textedit jest trochę szary, jakby się wyłączał. dlatego setFocusable byłby bardziej pożądany, ale nie działa. :) – Roger

Odpowiedz

160

Spróbuj

etAdd.setFocusableInTouchMode(true); 
etAdd.setFocusable(true); 

zamiast tylko

etAdd.setFocusable(true); 
+1

działa! :) Dzięki! – Roger

+7

oszczędzasz mi dźwięk czasu. –

+5

Zgodnie z dokumentacją dla '.setFocusableInTouchMode()' wywołanie '.setFocusableInTouchMode (true)' sprawia, że ​​wywoływanie '.setFocusable (true)' jest niepotrzebne. To znaczy. musisz tylko wywołać 'etAdd.setFocusableInTouchMode (true);' –

-3

Musisz ustawić EditText do

etAdd.setEnabled(false); 
2

To rozwiązanie pracował dla mnie:

EditText test3 = (EditText) findViewById(R.id.edittext); 
CheckBox check1= (CheckBox) findViewById(R.id.checkBox1); 
test3.setClickable(false); 
test3.setEnabled(false); 
test3.setFocusable(false); 
check1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if(check1.isChecked()){ 
     test3.setText(""); 
     test3.setClickable(false); 
     test3.setEnabled(false); 
     test3.setFocusable(false); 
     } else { 
     test3.setClickable(true); 
     test3.setEnabled(true); 
     test3.setFocusable(true); 
     test3.setFocusableInTouchMode(true); 
     } 
    } 
}); 

Po zaznaczeniu tego pola wyboru edittext jest wyłączony.

mam nadzieję, że to pomoże ktoś :)

0

używam poniżej kodu ostrości i kliknij usunąć i dodać:

Usuń: secondFirstHalfEditText.setClickable(false); secondFirstHalfEditText.setFocusable(false);

Dodaj:

editText.setClickable(true); 
editText.setFocusableInTouchMode(true); 
editText.setFocusable(true); 

Musi używać to Dla aktywnego Edittext >>

editText.setFocusableInTouchMode(true); 

Działa dla mnie perfekcyjnie

Powiązane problemy