Tenho um método que fiz para quando o edit que tiver em focus receber uma cor
public void AZFocusEdit(final EditText editGeneric,
final LinearLayout linear_generic, final OnThinkFocus focus) {
editGeneric.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (focus != null)
focus.onThinkFocus(v, hasFocus);
if (hasFocus) {
// linear_generic.setBackgroundColor(Color
// .parseColor("#6495ED"));
editGeneric.requestFocus();
} else {
editGeneric.clearFocus();
// linear_generic.setBackgroundColor(Color.TRANSPARENT);
}
}
});
}
As linhas comentadas é que causam a lentidão, mais preciso colorir as mesmas quando entra no focus, como faço então?
Obrigado.
Não é o fato de ficar dando requestFocus dentro do focusChanged?
Se mais componentes tem o mesmo vai ficar repetindo entre eles.
Achei que uma Thread resolveria…
public void AZFocusEdit(final EditText editGeneric,
final LinearLayout linear_generic, final OnThinkFocus focus) {
new Thread(new Runnable() {
public void run() {
editGeneric
.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (focus != null)
focus.onThinkFocus(v, hasFocus);
if (hasFocus) {
linear_generic.setBackgroundColor(Color
.parseColor("#6495ED"));
editGeneric.requestFocus();
} else {
editGeneric.clearFocus();
linear_generic
.setBackgroundColor(Color.TRANSPARENT);
}
}
});
}
}).start();
}
Apesar de não saber se fiz certo, mais também não deu certo não.
[quote=Marky.Vasconcelos]Não é o fato de ficar dando requestFocus dentro do focusChanged?
Se mais componentes tem o mesmo vai ficar repetindo entre eles.[/quote]
Olá Marky.Vasconcelos, tem alguma idéia como contornar este problema então? Pois utilizo em mais de um componente.
Apesar que comentei o requestFocus e deixei para colorir e fica lento do mesmo jeito, apenas se eu comentar as linhas de colorir e deixar transparente fica rápido.
Obrigado
Com este exemplo aqui, ja melhorou bem
http://patrickreinan.blogspot.com.br/2012_10_01_archive.html
Em vez de usar o LinearLayout estou usando pintar o EditText.
Voce da um clearFocus também, isso também invoca isso em outro componente, voce deve considerar apenas o hasFocus, pois quem perdeu vai estar false e quem ganhou vai estar true.
[quote=Marky.Vasconcelos]Voce da um clearFocus também, isso também invoca isso em outro componente, voce deve considerar apenas o hasFocus, pois quem perdeu vai estar false e quem ganhou vai estar true.[/quote]Hum, entendi, vou mudar aqui.
Obrigado.