<f{"id":186,"date":"2013-02-12T09:24:13","date_gmt":"2013-02-12T08:24:13","guid":{"rendered":"http:\/\/www.bernhard-krenz.de\/?p=186"},"modified":"2013-02-12T09:25:11","modified_gmt":"2013-02-12T08:25:11","slug":"falsche-grose-eines-imageview-in-einem-listview","status":"publish","type":"post","link":"https:\/\/www.bernhard-krenz.de\/?p=186","title":{"rendered":"Falsche Gr\u00f6\u00dfe eines ImageView in einem ListView"},"content":{"rendered":"<p>Wer in einem Android-ListView Reihen mit unterschiedlicher H\u00f6he hat, zum Beispiel Bilder und Text-Elemente, wird eventuell wie ich auf das Problem sto\u00dfen, dass die Reihe f\u00fcr das Bild mit einer falschen H\u00f6he angezeigt wird.<\/p>\n<p>In meinem Fall war diese zu hoch, was je nach Skalierungsverhalten des Bildes entweder zu einer Verzerrung des Bildes oder zu einem Abstand zur n\u00e4chsten Reihe f\u00fchrte.<\/p>\n<p>Im Adapter des ListViews muss deshalb zur Laufzeit die H\u00f6he des Bildes berechnet und manuell gesetzt werden. Der View dazu wird aus einer Layout-XML in res\/layout erzeugt.<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;LinearLayout xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;\r\n\tandroid:layout_width=&quot;fill_parent&quot;\r\n\tandroid:layout_height=&quot;fill_parent&quot;\r\n\tandroid:orientation=&quot;vertical&quot;&gt;\r\n\r\n\t&lt;ImageView\r\n\t\tandroid:id=&quot;@+id\/imageView&quot;\r\n\t\tandroid:layout_width=&quot;match_parent&quot;\r\n\t\tandroid:layout_height=&quot;wrap_content&quot;\r\n\t\tandroid:scaleType=&quot;fitXY&quot;\r\n\t\t\/&gt;\r\n\r\n&lt;\/LinearLayout&gt;\r\n<\/pre>\n<p>Die getView-Methode im Adapter k\u00f6nnte wie folgt aussehen. Dies ist nat\u00fcrlich nur der Auszug f\u00fcr den ImageView. F\u00fcr die anderen Reihen gibt es je nach Position anderen Inhalt.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n@Override\r\npublic View getView(int position, View convertView, ViewGroup parent)\r\n{\r\n\tView view = (LinearLayout) mInflater.inflate(R.layout.image_item, null);\r\n\t\r\n\tImageView imageView = (ImageView) view.findViewById(R.id.imageView);\r\n\r\n\t\/\/ load the bitmap for the image source\r\n\tString filePath = &quot;xyz&quot;; \/\/ you get this from somewhere, depending on the position\t\r\n\tBitmap bitmap = Util.loadBitmap((Activity) context, RessourceLoader.getFilesDirectory() + filePath);\r\n\t\r\n\tif (bitmap != null)\r\n\t{\r\n\t\timageView.setImageBitmap(bitmap);\r\n\r\n\t\t\/\/ get the dimensions of the current display\r\n\t\tDisplayMetrics dm = new DisplayMetrics();\r\n\t\t((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm);\r\n\t\tif (dm != null)\r\n\t\t{\r\n\t\t\t\/\/ calculate height and set it via layout params\r\n\t\t\tfloat height = ((float) dm.widthPixels \/ bitmap.getWidth()) * bitmap.getHeight();\r\n\t\t\timageView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, (int)height));\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn view;\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wer in einem Android-ListView Reihen mit unterschiedlicher H\u00f6he hat, zum Beispiel Bilder und Text-Elemente, wird eventuell wie ich auf das<a href=\"https:\/\/www.bernhard-krenz.de\/?p=186\" class=\"searchmore\">Weiterlesen&hellip;<\/a><\/p>\n<div class=\"clr\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[12],"_links":{"self":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/186"}],"collection":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=186"}],"version-history":[{"count":5,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/186\/revisions"}],"predecessor-version":[{"id":191,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=\/wp\/v2\/posts\/186\/revisions\/191"}],"wp:attachment":[{"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernhard-krenz.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}