Pregunta

Estoy tratando de inflar un ImageView que escala una Disponibles que puedo mostrar en un GalleryView. Mi código para inflar el punto de vista parece muy bien el trabajo, con la excepción de que los atributos de la ImageView no se aplican. Específicamente, el ImageView inflado no tiene la anchura / altura que puse para ello a través de los androide:. Params de diseño en XML

Puede alguien me muestre lo que estoy haciendo mal?

Quiero establecer la anchura / altura de la imagen en dp, por lo que es el tamaño correcto a través de múltiples inhaladores de polvo seco de pantalla y soporte de Android 1.5+. Como resultado de ello no puedo usar algo como:

i.setLayoutParams(new Gallery.LayoutParams(150, 116)

Mi definición diseño es:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dp" android:layout_height="116dp"
    android:background="@drawable/gallery_item_background"
    android:scaleType="fitXY" />
</ImageView>

Y el fragmento que estoy utilizando para inflar el ImageView es:

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        ImageView i = (ImageView) inflater.inflate(R.layout.gallery_item, null);
        i.setImageResource(mImageIds.get(position));
        i.setScaleType(ImageView.ScaleType.FIT_XY);

        return i;
    }
¿Fue útil?

Solución

El truco es simplemente usar la siguiente versión de inflate():

inflater.inflate(R.layout.gallery_item, parent, false);

Los dos últimos parámetros son obligatorios. Si pasa "nulo", como el padre, el inflador no sabe qué tipo de parámetros de diseño para crear y por lo tanto ignora todos los atributos android:layout_ XML. El último parámetro simplemente le dice al inflador para no añadir la visión exagerada a los padres de inmediato. Si pasa cierto (al menos dentro de un método getView() del adaptador), lo malo va a suceder.

Otros consejos

No estoy seguro, pero este trabajo fuerzas. Dar una identificación a su imageview en su xml (dicen que es "@ + ID / imagen":

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = getLayoutInflater();
    View view = (View) inflater.inflate(R.layout.gallery_item, null);
    ImageView i = (ImageView) view.findViewById(R.id.image);
    i.setImageResource(mImageIds.get(position));
    i.setScaleType(ImageView.ScaleType.FIT_XY);

    return view;
}

Por la forma en que debe optimizarlo comprobar si convertView es nulo con el fin de vistas de reciclaje. Mira esto: http://code.google.com/events/io /2009/sessions/TurboChargeUiAndroidFast.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top