Open alexnavarro opened 11 years ago
Também encontrei o mesmo problema. Tentando ajudar a corrigir aqui mas tá complicado. Só da na versão 4+ mesmo.
Olá,
Me desculpem pela demora. Infelizmente não estou tendo tempo para me dedicar a esse projeto por enquanto. @tuliomonteazul se quiser ajuda para entender meu código (ele está bem bagunçado, eu sei :( ) pode ficar a vontade para perguntar.
@toshikurauchi Acho que descobri uma forma de corrigir esse erro, mas não sei se é a melhor. Parece que o método onSelectionChanged é executado mais de uma vez na versão 4+ quando o EditText possui Hint, causando esse comportamento indesejado do cursor sendo movido para a esquerda. Fiz o controle utilizando uma variável booleana pra executar o onSelectionChanged apenas uma vez e aparentemente corrigiu o problema. O que você acha?
@toshikurauchi Seu código está bem limpo e organizado em métodos, talvez alguns comentários sobre a necessidade de alguns métodos ajudaria um pouco mais, mas está ótimo :) Mas quem sou eu pra falar, você fez um ótimo componente e ainda compartilhou com a comunidade hehe. Parabéns por isso!
@tuliomonteazul valeu! @alexnavarro atualizei o jar com a correção do @tuliomonteazul . Você pode testar e me falar se posso fechar a issue, por favor?
change your method change ssb.append(getHint().charAt(i)); with char val= getHint().charAt(maskToRaw[i]);
in below method
private CharSequence makeMaskedTextWithHint() { SpannableStringBuilder ssb = new SpannableStringBuilder(); int mtrv; int maskFirstChunkEnd = rawToMask[0]; for(int i = 0; i < mask.length(); i++) { mtrv = maskToRaw[i]; if (mtrv != -1) { if (mtrv < rawText.length()) { ssb.append(rawText.charAt(mtrv)); } else { ssb.append(getHint().charAt(i)); } } else { ssb.append(mask.charAt(i)); } if ((keepHint && rawText.length() < rawToMask.length && i >= rawToMask[rawText.length()]) || (!keepHint && i >= maskFirstChunkEnd)) { ssb.setSpan(new ForegroundColorSpan(getCurrentHintTextColor()), i, i + 1, 0); } } return ssb; }
Quando coloquei hint para uma máscara de telefone e comecei a digitar o cursor fica voltando pra esquerda do o Android 4 pra frente.
Obrigado.