Construyendo una RatingBar usando imágenes cargadas desde la web
Tengo un formulario que estoy generando dinámicamente a partir de los datos que recibo de un servicio web. Este servicio web proporciona imágenes que deben utilizarse en la creación de elementos de entrada. Estoy teniendo dificultades para configurar elprogressDrawable
de unRatingBar
. Aunque XML puedo aplicar una imagen personalizada utilizando lo siguiente comoprogressDrawable
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/progress" android:drawable="@drawable/custom_star" />
</layer-list>
dóndecustom_star
es una simple imagen .png, y con@android:style/Widget.RatingBar
como el estilo de RatingBar. Esto funciona bien:
pero quiero cambiarcustom_star
dinamicamente.
En el código, he intentado configurar el progreso dibujable usando un mapa de bits directamente:
Drawable d = new BitmapDrawable(getResources(), downloadedImage);
ratingBar.setProgressDrawable(d);
y también mediante la construcción de unalayer-list
:
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] {
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star)
});
layerDrawable.setId(0, android.R.id.background);
layerDrawable.setId(1, android.R.id.secondaryProgress);
layerDrawable.setId(2, android.R.id.progress);
ratingBar.setProgressDrawable(layerDrawable);
Ninguno funciona para mí; ambos resultan en elcustom_star
dibujable que aparece una vez, estirado por las dimensiones de laRatingBar
:
¿Algunas ideas?
Actualizar:
La respuesta de Luksprog a continuación ha mejorado, pero todavía tengo un par de problemas. Ahora, la estrella dibujable no se estira y el valor se puede establecer al tocar, pero aparece como tal con 3/5 seleccionado:
y 5/5 seleccionados:
Creo que la escala de las imágenes se puede arreglar con algunos ajustes, pero molestasecondaryProgress
el dibujable no parece estar definido, el dibujable utilizado para las estrellas no seleccionadas en gris. Sin eso, no es muy utilizable.