Ninepatch escala incorrecta al desplazarse después de aplicar un filtro de color?

hoy he intentado hacer mi listview un poco más dinámico. Así que he creado un blanco de nuevepatch-imagen y agregó un filtro de color con el método .setColorFilter. Ese no es el problema. Pero después de aplicar esto, cada vez que me desplazo la imagen está escalando mal (al azar) así que deja para decir que mi artículo es 100dp alto con un poco de texto. Después de desplazar el elemento sigue siendo 100dp alto y todo el texto se muestra, pero la imagen en el fondo sólo utiliza 50dp ahora.

Aquí está mi código:

aquí cómo fijo el Colorfilter:

orgleftbox = context.getResources().getDrawable(R.drawable.list_bubble); orgleftbox.setColorFilter( 0xff00c0ff, Mode.MULTIPLY ); 

y aquí cómo lo agrego en mi adaptador

 v = inflater.inflate(R.layout.list_view_item, null); TextView t = (TextView)v.findViewById(R.id.text); t.setBackgroundDrawable(orgrightbox); 

Espero que alguien me ayude. Porque este error me molesta;

Su interpretación es correcta, no puede utilizar el Drawable en varias vistas. El dibujable tiene un tamaño establecido por su vista, por lo que si lo adjunta a varias vistas al mismo tiempo, no funcionará correctamente a menos que las vistas tengan exactamente la misma dimensión.

yo era capaz de arreglar mi problema por mi cuenta. Así que respondo a esto para todos los demás;).

El problema era que cargué mi drawable una vez en el constructor, porque pensé así que no tendré que cargarlo para cada listitem nuevo. Pero el sistema androide los maneja como el mismo objeto de memoria. así que cada listitem-background utiliza el mismo mem-space (espero que no esté mal, creo que sí). Si empiezo a desplazarse el siguiente listitem será declarado y cambiará la altura y el ancho de su fondo a sus necesidades, ejemplo el siguiente elemento es sólo 50dp alto cambia el valor guardado a éste. Ahora cualquier otro fondo de la lista cambiará más o menos a esta altura también.

El arreglo simple es, que usted tiene que cargar y aplicar el colorfilter para cada artículo nuevo. espec. en el método getView.

 @Override public View getView(int pos, View convertView, ViewGroup parent) { View v = null; leftbox = (NinePatchDrawable) r.getDrawable(R.drawable.bubble_green); leftbox.setColorFilter( 0xff00c0ff, Mode.MULTIPLY ); v = inflater.inflate(R.layout.list_view_item_right, null); TextView t = (TextView)v.findViewById(R.id.text); t.setBackgroundDrawable(leftbox); 

Espero que esta respuesta sea útil.

EDIT (Mil veces más simple):

Si sólo desea aplicar un colorFilter a un Layout (Textview …) hágalo de esta manera (gracias Pasha):

 TextView t = (TextView)v.findViewById(R.id.text); t.getBackground().setColorFilter(0xff00c0ff, Mode.MULTIPLY ); 
  • Fuerza de la pantalla WebView para dibujar
  • JQuery móvil deshabilitar el contenido de la página desplazamiento vertical
  • Desplazamiento de la animación en NavigationView
  • Agregar una vista de pie de página nativa a la vista web
  • Actualizar Android listview after scrollBy on
  • Infinite Auto Scroll ListView con velocidad de desplazamiento controlada
  • No se puede implementar el deslizamiento + comportamiento de desplazamiento en el panel deslizante con ListView en Android
  • Android WebView dentro de ScrollView solo desplaza scrollview
  • Deshabilitar listview supercroll en samsung android
  • Ocultar / Mostrar la barra de acciones más suavemente?
  • Barra de desplazamiento en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.