Aufgeblasen Bildansicht zu setzen, GalleryView ist nicht die richtige Größe
Ich versuche aufblasen, um eine Bildansicht, die Waage ein Drawable, dass ich die Anzeige in einem GalleryView. Mein code zum aufblasen der Blick scheint zu funktionieren gut, außer, dass die Attribute der Bildansicht nicht angewendet werden. Insbesondere die überhöhten Bildansicht nicht die Breite/Höhe, dass ich es über den android:layout-Parameter in XML.
Kann mir jemand zeigen was ich falsch mache?
Will ich legen Sie die Breite/Höhe des Bildes in der dp, so dass es die richtige Größe ist über mehrere Bildschirm-dpi und unterstützt Android 1.5+. Als Ergebnis kann ich nicht so etwas wie:
i.setLayoutParams(new Gallery.LayoutParams(150, 116)
Meine layout-definition ist:
<?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>
Und dem snippet bin ich mit dem aufblasen, um die Bildansicht ist:
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;
}
- Für den moment habe ich gehackt eine Lösung mit DisplayMetrics.Dichte. float den = mDisplayMetrics.Dichte; convertView.setLayoutParams(neue Galerie.LayoutParams((int)(den * 150), (int)(den * 116)));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der trick ist einfach, verwenden Sie die folgende version von
inflate()
:Den letzten beiden Parameter sind Pflichtangaben. Wenn Sie übergeben Sie "null" als den Eltern, den inflater nicht wissen, welche Art von layout-Parametern, zu erstellen und daher ignoriert alle
android:layout_
XML-Attribute. Der Letzte parameter sagt einfach das inflater nicht fügen Sie den aufgeblasenen Blick auf das übergeordnete Recht entfernt. Wenn Sie true übergeben (zumindest innerhalb eines AdaptersgetView()
- Methode), schlimme Dinge passieren wird.Ich bin mir nicht sicher, aber das könnte funktionieren. Geben Sie eine id für Ihre Bildansicht in Ihrem xml (sagen, es ist "@+id/image":
Durch die Art und Weise, die Sie optimieren sollten es überprüfen, wenn convertView null ist, um zu recyceln Ansichten. Überprüfen Sie dies: http://code.google.com/events/io/2009/sessions/TurboChargeUiAndroidFast.html