Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


ClearableEditText – requestLayout () incorrectamente llamado en Android 4.3

Implementé ClearableEdittext y funciona perfectamente excepto en 4.3 donde el logcat me inunda:

W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F...... 0,0-708,88 #7f050127 app:id/SearchEdittext} during second layout pass: posting in next frame 

Y al escribir en el edittext no aparece ningún texto. También después de que empiece a inundar el logcat, la interfaz de usuario se está congelando, excepto el teclado virtual.

No se puede encontrar ninguna información sobre esto en el Internetz. Y requestLayout() debe ser llamado dentro de la clase Edittext / Textview porque nunca lo llamo. ¿Alguien de ustedes sabe cómo solucionar esto o lo que está causando el error?

EDIT1 OK, por lo que el problema desaparece si comento la línea:

 setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]); 

Intenté publicar esto como un runnable a la cola de la interfaz de usuario de la visión pero no aparece el texto.

EDIT2 He visto este video de un desarrollador de Android explicando que algo recursivo está ocurriendo durante onLayout , pero una vez más, simplemente subclase EditText .

EDIT3 También intenté descartar el compuesto drawable y usar otro ImageView encima del EditText pero tiene algo hacer con la disposición pasa cuando dibujando algo encima del Edittext creo … la llamada recursive todavía está sucediendo y su bloqueo el IU. No sé qué probar a continuación … 4.3 sux

EDIT4 I terminó usando un diseño lineal con orientación horizontal y 9 patrón de trazado para el fondo de los componentes. En la disposición tengo un edittext normal con mi 9g de encargo Bg y entonces un ImageButton con otro Bg de 9patch de encargo.

Algo como esto:

Introduzca aquí la descripción de la imagen

La línea roja delimita el Edittext del ImageButton. Ahora funciona en 4.3

3 Solutions collect form web for “ClearableEditText – requestLayout () incorrectamente llamado en Android 4.3”

Un poco tarde respon, pero acabo de tener un problema relacionado con el componente ClearableEditText.

Parece que, debido al cambio de compounddrawables en setClearIconVisible (), un bucle eterno de eventos onfocus se activan.

Cambié el setClearIconVisible para cambiar solamente el drawable si hay cualquier cambio verdadero.

  protected void setClearIconVisible(boolean visible) { boolean wasVisible = getCompoundDrawables()[2] != null; if(wasVisible == visible) return; setCompoundDrawables(oldDrawables[0], oldDrawables[1], x, oldDrawables[3]); setCompoundDrawablePadding(oldPadding); } 

Eso arregló mi problema con el teclado no reaparecer. Un lazo eterno de eventos onfocus no hará ningún bien a nadie. Todavía agrega otra ronda de diseño y focusedChanged, por lo que podría haber una solución más inteligente a esto. Estoy bien con una ronda extra, aunque.

También he enviado una solicitud de extracción al desarrollador, https://github.com/yanchenko/droidparts/pull/31 .

Pruebe el método clear onFocusChange. Me ayuda

edittext usando 2 vistas separadas para el edittext y clear btn , ver mi pregunta editada.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.