\n \u003C/shape>\n \u003C/item>\n \u003Citem android:bottom=\"1dp\" android:left=\"1dp\" android:right=\"1dp\">\n \u003Cshape>\n \u003Csolid android:color=\"#ffffffff\"/>\n \u003C/shape>\n \u003C/item>\n\u003C/layer-list>\n","xml","",[38,39,40,48,54,60,66,72,78,84,90,95,101,106,111],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,47],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[41,49,51],{"class":43,"line":50},2,[41,52,53],{},"\u003Clayer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n",[41,55,57],{"class":43,"line":56},3,[41,58,59],{}," \u003Citem>\n",[41,61,63],{"class":43,"line":62},4,[41,64,65],{}," \u003Cshape>\n",[41,67,69],{"class":43,"line":68},5,[41,70,71],{}," \u003Cstroke android:width=\"1px\" android:color=\"#ffbbbbbb\"/>\n",[41,73,75],{"class":43,"line":74},6,[41,76,77],{}," \u003C/shape>\n",[41,79,81],{"class":43,"line":80},7,[41,82,83],{}," \u003C/item>\n",[41,85,87],{"class":43,"line":86},8,[41,88,89],{}," \u003Citem android:bottom=\"1dp\" android:left=\"1dp\" android:right=\"1dp\">\n",[41,91,93],{"class":43,"line":92},9,[41,94,65],{},[41,96,98],{"class":43,"line":97},10,[41,99,100],{}," \u003Csolid android:color=\"#ffffffff\"/>\n",[41,102,104],{"class":43,"line":103},11,[41,105,77],{},[41,107,109],{"class":43,"line":108},12,[41,110,83],{},[41,112,114],{"class":43,"line":113},13,[41,115,116],{},"\u003C/layer-list>\n",[18,118,119],{},"For the rounded corners, create another xml, “rounded_corner_top.xml”:",[31,121,123],{"className":33,"code":122,"language":35,"meta":36,"style":36},"\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Clayer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n \u003Citem>\n \u003Cshape>\n \u003Cstroke android:width=\"1dp\" android:color=\"#ffbbbbbb\"/>\n \u003Ccorners android:topLeftRadius=\"20dp\"\n android:topRightRadius=\"20dp\"\n />\n \u003C/shape>\n \u003C/item>\n \u003Citem android:top=\"1dp\" android:left=\"1dp\" android:right=\"1dp\" android:bottom=\"1dp\">\n \u003Cshape>\n \u003Csolid android:color=\"#ffffffff\"/>\n \u003Ccorners android:topLeftRadius=\"20dp\"\n android:topRightRadius=\"20dp\"\n />\n \u003C/shape>\n \u003C/item>\n\u003C/layer-list>\n",[38,124,125,130,134,138,142,147,152,157,162,166,170,175,179,183,188,193,198,203,208],{"__ignoreMap":36},[41,126,127],{"class":43,"line":44},[41,128,129],{},"\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n",[41,131,132],{"class":43,"line":50},[41,133,53],{},[41,135,136],{"class":43,"line":56},[41,137,59],{},[41,139,140],{"class":43,"line":62},[41,141,65],{},[41,143,144],{"class":43,"line":68},[41,145,146],{}," \u003Cstroke android:width=\"1dp\" android:color=\"#ffbbbbbb\"/>\n",[41,148,149],{"class":43,"line":74},[41,150,151],{}," \u003Ccorners android:topLeftRadius=\"20dp\"\n",[41,153,154],{"class":43,"line":80},[41,155,156],{}," android:topRightRadius=\"20dp\"\n",[41,158,159],{"class":43,"line":86},[41,160,161],{}," />\n",[41,163,164],{"class":43,"line":92},[41,165,77],{},[41,167,168],{"class":43,"line":97},[41,169,83],{},[41,171,172],{"class":43,"line":103},[41,173,174],{}," \u003Citem android:top=\"1dp\" android:left=\"1dp\" android:right=\"1dp\" android:bottom=\"1dp\">\n",[41,176,177],{"class":43,"line":108},[41,178,65],{},[41,180,181],{"class":43,"line":113},[41,182,100],{},[41,184,186],{"class":43,"line":185},14,[41,187,151],{},[41,189,191],{"class":43,"line":190},15,[41,192,156],{},[41,194,196],{"class":43,"line":195},16,[41,197,161],{},[41,199,201],{"class":43,"line":200},17,[41,202,77],{},[41,204,206],{"class":43,"line":205},18,[41,207,83],{},[41,209,211],{"class":43,"line":210},19,[41,212,116],{},[18,214,215],{},"Implementing the bottom part is quite the same, just with bottomLeftRadius and bottomRightRadius. (maybe also create one\nwith all corners rounded, if the list only has one entry)",[18,217,218],{},"For better usability, also provide drawables with other colors for the different states, that the list item can have and\nreference them in another xml in the drawable folder (“selector_rounded_corner_top.xml”) as followed:",[31,220,222],{"className":33,"code":221,"language":35,"meta":36,"style":36},"\n\u003Cselector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n \u003Citem android:drawable=\"@drawable/rounded_corner_top_click\"\n android:state_pressed=\"true\"/>\n \u003Citem android:drawable=\"@drawable/rounded_corner_top_click\"\n android:state_focused=\"true\"/>\n \u003Citem android:drawable=\"@drawable/rounded_corner_top\"/>\n\u003C/selector>\n",[38,223,224,230,235,240,245,249,254,259],{"__ignoreMap":36},[41,225,226],{"class":43,"line":44},[41,227,229],{"emptyLinePlaceholder":228},true,"\n",[41,231,232],{"class":43,"line":50},[41,233,234],{},"\u003Cselector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n",[41,236,237],{"class":43,"line":56},[41,238,239],{}," \u003Citem android:drawable=\"@drawable/rounded_corner_top_click\"\n",[41,241,242],{"class":43,"line":62},[41,243,244],{}," android:state_pressed=\"true\"/>\n",[41,246,247],{"class":43,"line":68},[41,248,239],{},[41,250,251],{"class":43,"line":74},[41,252,253],{}," android:state_focused=\"true\"/>\n",[41,255,256],{"class":43,"line":80},[41,257,258],{}," \u003Citem android:drawable=\"@drawable/rounded_corner_top\"/>\n",[41,260,261],{"class":43,"line":86},[41,262,263],{},"\u003C/selector>\n",[18,265,266],{},"Now do the same for the other backgrounds of the list.",[18,268,269],{},"All that is left now, is to assign the right backgrounds in our ListAdapter like following:",[31,271,275],{"className":272,"code":273,"language":274,"meta":36,"style":36},"language-java shiki shiki-themes github-light github-dark","@Override\npublic View getView(int position, View convertView, ViewGroup parent) {\n //...\n //skipping the view reuse stuff\n if (position == 0 && entry_list.size() == 1) {\n view.setBackgroundResource(R.drawable.selector_rounded_corner);\n } else if (position == 0) {\n view.setBackgroundResource(R.drawable.selector_rounded_corner_top);\n } else if (position == entry_list.size() - 1) {\n view.setBackgroundResource(R.drawable.selector_rounded_corner_bottom);\n } else {\n view.setBackgroundResource(R.drawable.selector_middle);\n }\n //...\n //skipping the filling of the view\n}\n","java",[38,276,277,282,287,292,297,302,307,312,317,322,327,332,337,342,346,351],{"__ignoreMap":36},[41,278,279],{"class":43,"line":44},[41,280,281],{},"@Override\n",[41,283,284],{"class":43,"line":50},[41,285,286],{},"public View getView(int position, View convertView, ViewGroup parent) {\n",[41,288,289],{"class":43,"line":56},[41,290,291],{}," //...\n",[41,293,294],{"class":43,"line":62},[41,295,296],{}," //skipping the view reuse stuff\n",[41,298,299],{"class":43,"line":68},[41,300,301],{}," if (position == 0 && entry_list.size() == 1) {\n",[41,303,304],{"class":43,"line":74},[41,305,306],{}," view.setBackgroundResource(R.drawable.selector_rounded_corner);\n",[41,308,309],{"class":43,"line":80},[41,310,311],{}," } else if (position == 0) {\n",[41,313,314],{"class":43,"line":86},[41,315,316],{}," view.setBackgroundResource(R.drawable.selector_rounded_corner_top);\n",[41,318,319],{"class":43,"line":92},[41,320,321],{}," } else if (position == entry_list.size() - 1) {\n",[41,323,324],{"class":43,"line":97},[41,325,326],{}," view.setBackgroundResource(R.drawable.selector_rounded_corner_bottom);\n",[41,328,329],{"class":43,"line":103},[41,330,331],{}," } else {\n",[41,333,334],{"class":43,"line":108},[41,335,336],{}," view.setBackgroundResource(R.drawable.selector_middle);\n",[41,338,339],{"class":43,"line":113},[41,340,341],{}," }\n",[41,343,344],{"class":43,"line":185},[41,345,291],{},[41,347,348],{"class":43,"line":190},[41,349,350],{}," //skipping the filling of the view\n",[41,352,353],{"class":43,"line":195},[41,354,355],{},"}\n",[18,357,358],{},"Aaaand we’re done.",[360,361,362],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":50,"depth":50,"links":364},[],[366,367],"mobile-blog","tutorial","2011-11-21T10:38:22","In my last project I needed to implement a ListView with rounded corners, because the app had to be supplied for Android\\nand iPhone and they needed to look somewhat alike.","md","https://synyx.de/blog/android-listview-with-rounded-corners/",{},"/blog/android-listview-with-rounded-corners",{"title":7,"description":20},"blog/android-listview-with-rounded-corners",[377,378,379,380],"android","list","lists","listview","In my last project I needed to implement a ListView with rounded corners, because the app had to be supplied for Android and iPhone and they needed to look somewhat…","YJnytc_0AozIrr4hpGG2OyB-5_wi2WxdvyjS_ltNk3E",[384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,449,452,455,458,461,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,570,573,576,579,582,585,588,591,594,597,600,603,606,609,612,615,618,621,624,627,630,633,636,639,642,645,648,651,654,657,660,663,666,669,672,675,677,680,683,686,689,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,768,771,774,777,780,783,786,789,792,795,798,801],{"slug":385,"name":386},"abel","Jennifer Abel",{"slug":388,"name":389},"allmendinger","Otto Allmendinger",{"slug":391,"name":392},"antony","Ben Antony",{"slug":394,"name":395},"arrasz","Joachim Arrasz",{"slug":397,"name":398},"bauer","David Bauer",{"slug":400,"name":401},"bechtold","Janine Bechtold",{"slug":403,"name":404},"boersig","Jasmin Börsig",{"slug":406,"name":407},"buch","Fabian Buch",{"slug":409,"name":410},"buchloh","Aljona Buchloh",{"slug":412,"name":413},"burgard","Julia Burgard",{"slug":415,"name":416},"caspar-schwedes","Caspar Schwedes",{"slug":418,"name":419},"christina-schmitt","Christina Schmitt",{"slug":421,"name":422},"clausen","Michael Clausen",{"slug":424,"name":425},"contargo_poetzsch","Thomas Pötzsch",{"slug":427,"name":428},"damrath","Sebastian Damrath",{"slug":430,"name":431},"daniel","Markus Daniel",{"slug":433,"name":434},"dasch","Julia Dasch",{"slug":436,"name":437},"denman","Joffrey Denman",{"slug":439,"name":440},"dfuchs","Daniel Fuchs",{"slug":442,"name":443},"dobler","Max Dobler",{"slug":445,"name":446},"dobriakov","Vladimir Dobriakov",{"slug":448,"name":448},"dreiqbik",{"slug":450,"name":451},"dschaefer","Denise Schäfer",{"slug":453,"name":454},"dschneider","Dominik Schneider",{"slug":456,"name":457},"duerlich","Isabell Duerlich",{"slug":459,"name":460},"dutkowski","Bernd Dutkowski",{"slug":462,"name":462},"eifler",{"slug":464,"name":465},"essig","Tim Essig",{"slug":467,"name":468},"ferstl","Maximilian Ferstl",{"slug":470,"name":471},"fey","Prisca Fey",{"slug":473,"name":474},"frank","Leonard Frank",{"slug":476,"name":477},"franke","Arnold Franke",{"slug":479,"name":480},"frischer","Nicolette Rudmann",{"slug":482,"name":483},"fuchs","Petra Fuchs",{"slug":485,"name":486},"gari","Sarah Gari",{"slug":488,"name":489},"gast","Gast",{"slug":491,"name":492},"graf","Johannes Graf",{"slug":494,"name":495},"grammlich","Daniela Grammlich",{"slug":497,"name":498},"guthardt","Sabrina Guthardt",{"slug":500,"name":501},"haeussler","Johannes Häussler",{"slug":503,"name":504},"hammann","Daniel Hammann",{"slug":506,"name":507},"heetel","Julian Heetel",{"slug":509,"name":510},"heft","Florian Heft",{"slug":512,"name":513},"heib","Sebastian Heib",{"slug":515,"name":516},"heisler","Ida Heisler",{"slug":518,"name":519},"helm","Patrick Helm",{"slug":521,"name":522},"herbold","Michael Herbold",{"slug":524,"name":525},"hofmann","Peter Hofmann",{"slug":527,"name":528},"hopf","Florian Hopf",{"slug":530,"name":531},"jaud","Alina Jaud",{"slug":533,"name":534},"jayasinghe","Robin De Silva Jayasinghe",{"slug":536,"name":537},"jbuch","Jonathan Buch",{"slug":539,"name":540},"junghanss","Gitta Junghanß",{"slug":542,"name":543},"kadyietska","Khrystyna Kadyietska",{"slug":545,"name":546},"kannegiesser","Marc Kannegiesser",{"slug":548,"name":549},"karoly","Robert Károly",{"slug":551,"name":552},"karrasz","Katja Arrasz-Schepanski",{"slug":554,"name":555},"kaufmann","Florian Kaufmann",{"slug":557,"name":558},"kesler","Mike Kesler",{"slug":560,"name":561},"kirchgaessner","Bettina Kirchgäßner",{"slug":563,"name":564},"klem","Yannic Klem",{"slug":566,"name":567},"klenk","Timo Klenk",{"slug":9,"name":569},"Tobias Knell",{"slug":571,"name":572},"knoll","Anna-Lena Knoll",{"slug":574,"name":575},"knorre","Matthias Knorre",{"slug":577,"name":578},"koenig","Melanie König",{"slug":580,"name":581},"kraft","Thomas Kraft",{"slug":583,"name":584},"krupicka","Florian Krupicka",{"slug":586,"name":587},"kuehn","Christian Kühn",{"slug":589,"name":590},"lange","Christian Lange",{"slug":592,"name":593},"larrasz","Luca Arrasz",{"slug":595,"name":596},"leist","Sascha Leist",{"slug":598,"name":599},"lihs","Michael Lihs",{"slug":601,"name":602},"linsin","David Linsin",{"slug":604,"name":605},"maniyar","Christian Maniyar",{"slug":607,"name":608},"martin","Björnie",{"slug":610,"name":611},"martin-koch","Martin Koch",{"slug":613,"name":614},"matt","Tobias Matt",{"slug":616,"name":617},"mennerich","Christian Mennerich",{"slug":619,"name":620},"menz","Alexander Menz",{"slug":622,"name":623},"meseck","Frederick Meseck",{"slug":625,"name":626},"messner","Oliver Messner",{"slug":628,"name":629},"michael-ploed","Michael Plöd",{"slug":631,"name":632},"mies","Marius Mies",{"slug":634,"name":635},"mihai","Alina Mihai",{"slug":637,"name":638},"moeller","Jörg Möller",{"slug":640,"name":641},"mohr","Rebecca Mohr",{"slug":643,"name":644},"moretti","David Moretti",{"slug":646,"name":647},"mueller","Sven Müller",{"slug":649,"name":650},"muessig","Alexander Müssig",{"slug":652,"name":653},"neupokoev","Grigory Neupokoev",{"slug":655,"name":656},"nussbaecher","Carmen Nussbächer",{"slug":658,"name":659},"ochs","Pascal Ochs",{"slug":661,"name":662},"oelhoff","Jan Oelhoff",{"slug":664,"name":665},"oengel","Yasin Öngel",{"slug":667,"name":668},"oezsoy","Enis Özsoy",{"slug":670,"name":671},"posch","Maya Posch",{"slug":673,"name":674},"ralfmueller","Ralf Müller",{"slug":676,"name":676},"redakteur",{"slug":678,"name":679},"reich","Michael Reich",{"slug":681,"name":682},"reinhard","Karl-Ludwig Reinhard",{"slug":684,"name":685},"rmueller","Rebecca Müller",{"slug":687,"name":688},"rosum","Jan Rosum",{"slug":690,"name":690},"rueckert",{"slug":692,"name":693},"ruessel","Sascha Rüssel",{"slug":695,"name":696},"sauter","Moritz Sauter",{"slug":698,"name":699},"schaefer","Julian Schäfer",{"slug":701,"name":702},"scherer","Petra Scherer",{"slug":704,"name":705},"schlicht","Anne Schlicht",{"slug":707,"name":708},"schmidt","Jürgen Schmidt",{"slug":710,"name":711},"schneider","Tobias Schneider",{"slug":713,"name":714},"seber","Benjamin Seber",{"slug":716,"name":717},"sommer","Marc Sommer",{"slug":719,"name":720},"speaker-fels","Jakob Fels",{"slug":722,"name":723},"speaker-gierke","Oliver Gierke",{"slug":725,"name":726},"speaker-krupa","Malte Krupa",{"slug":728,"name":729},"speaker-mader","Jochen Mader",{"slug":731,"name":732},"speaker-meusel","Tim Meusel",{"slug":734,"name":735},"speaker-milke","Oliver Milke",{"slug":737,"name":738},"speaker-paluch","Mark Paluch",{"slug":740,"name":741},"speaker-schad","Jörg Schad",{"slug":743,"name":744},"speaker-schalanda","Jochen Schalanda",{"slug":746,"name":747},"speaker-schauder","Jens Schauder",{"slug":749,"name":750},"speaker-unterstein","Johannes Unterstein",{"slug":752,"name":753},"speaker-wolff","Eberhard Wolff",{"slug":755,"name":756},"speaker-zoerner","Stefan Zörner",{"slug":758,"name":759},"stefan-belger","Stefan Belger",{"slug":761,"name":762},"steinegger","Roland Steinegger",{"slug":764,"name":765},"stern","sternchen synyx",{"slug":767,"name":767},"synyx",{"slug":769,"name":770},"szulc","Mateusz Szulc",{"slug":772,"name":773},"tamara","Tamara Tunczinger",{"slug":775,"name":776},"theuer","Tobias Theuer",{"slug":778,"name":779},"thieme","Sandra Thieme",{"slug":781,"name":782},"thies-clasen","Marudor",{"slug":784,"name":785},"toernstroem","Olle Törnström",{"slug":787,"name":788},"ullinger","Max Ullinger",{"slug":790,"name":791},"ulrich","Stephan Ulrich",{"slug":793,"name":794},"wagner","Stefan Wagner",{"slug":796,"name":797},"weigel","Andreas Weigel",{"slug":799,"name":800},"werner","Fabian Werner",{"slug":802,"name":803},"wolke","Sören Wolke",["Reactive",805],{"$scookieConsent":806,"$ssite-config":808},{"functional":807,"analytics":807},false,{"_priority":809,"env":813,"name":814,"url":815},{"name":810,"env":811,"url":812},-10,-15,0,"production","nuxt-app","https://synyx.de",["Set"],["ShallowReactive",818],{"category-lists":-1,"authors":-1},"/blog/tags/lists"]