\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},{"loc":373},"blog/android-listview-with-rounded-corners",[378,379,380,381],"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…","9CC6c8rwGAA2DHWgkWQULMYCZsowcOY3iWgosU55qI8",[385,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,450,453,456,459,462,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,678,681,684,687,690,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,769,772,775,778,781,784,787,790,793,796,799,802],{"slug":386,"name":387},"abel","Jennifer Abel",{"slug":389,"name":390},"allmendinger","Otto Allmendinger",{"slug":392,"name":393},"antony","Ben Antony",{"slug":395,"name":396},"arrasz","Joachim Arrasz",{"slug":398,"name":399},"bauer","David Bauer",{"slug":401,"name":402},"bechtold","Janine Bechtold",{"slug":404,"name":405},"boersig","Jasmin Börsig",{"slug":407,"name":408},"buch","Fabian Buch",{"slug":410,"name":411},"buchloh","Aljona Buchloh",{"slug":413,"name":414},"burgard","Julia Burgard",{"slug":416,"name":417},"caspar-schwedes","Caspar Schwedes",{"slug":419,"name":420},"christina-schmitt","Christina Schmitt",{"slug":422,"name":423},"clausen","Michael Clausen",{"slug":425,"name":426},"contargo_poetzsch","Thomas Pötzsch",{"slug":428,"name":429},"damrath","Sebastian Damrath",{"slug":431,"name":432},"daniel","Markus Daniel",{"slug":434,"name":435},"dasch","Julia Dasch",{"slug":437,"name":438},"denman","Joffrey Denman",{"slug":440,"name":441},"dfuchs","Daniel Fuchs",{"slug":443,"name":444},"dobler","Max Dobler",{"slug":446,"name":447},"dobriakov","Vladimir Dobriakov",{"slug":449,"name":449},"dreiqbik",{"slug":451,"name":452},"dschaefer","Denise Schäfer",{"slug":454,"name":455},"dschneider","Dominik Schneider",{"slug":457,"name":458},"duerlich","Isabell Duerlich",{"slug":460,"name":461},"dutkowski","Bernd Dutkowski",{"slug":463,"name":463},"eifler",{"slug":465,"name":466},"essig","Tim Essig",{"slug":468,"name":469},"ferstl","Maximilian Ferstl",{"slug":471,"name":472},"fey","Prisca Fey",{"slug":474,"name":475},"frank","Leonard Frank",{"slug":477,"name":478},"franke","Arnold Franke",{"slug":480,"name":481},"frischer","Nicolette Rudmann",{"slug":483,"name":484},"fuchs","Petra Fuchs",{"slug":486,"name":487},"gari","Sarah Gari",{"slug":489,"name":490},"gast","Gast",{"slug":492,"name":493},"graf","Johannes Graf",{"slug":495,"name":496},"grammlich","Daniela Grammlich",{"slug":498,"name":499},"guthardt","Sabrina Guthardt",{"slug":501,"name":502},"haeussler","Johannes Häussler",{"slug":504,"name":505},"hammann","Daniel Hammann",{"slug":507,"name":508},"heetel","Julian Heetel",{"slug":510,"name":511},"heft","Florian Heft",{"slug":513,"name":514},"heib","Sebastian Heib",{"slug":516,"name":517},"heisler","Ida Heisler",{"slug":519,"name":520},"helm","Patrick Helm",{"slug":522,"name":523},"herbold","Michael Herbold",{"slug":525,"name":526},"hofmann","Peter Hofmann",{"slug":528,"name":529},"hopf","Florian Hopf",{"slug":531,"name":532},"jaud","Alina Jaud",{"slug":534,"name":535},"jayasinghe","Robin De Silva Jayasinghe",{"slug":537,"name":538},"jbuch","Jonathan Buch",{"slug":540,"name":541},"junghanss","Gitta Junghanß",{"slug":543,"name":544},"kadyietska","Khrystyna Kadyietska",{"slug":546,"name":547},"kannegiesser","Marc Kannegiesser",{"slug":549,"name":550},"karoly","Robert Károly",{"slug":552,"name":553},"karrasz","Katja Arrasz-Schepanski",{"slug":555,"name":556},"kaufmann","Florian Kaufmann",{"slug":558,"name":559},"kesler","Mike Kesler",{"slug":561,"name":562},"kirchgaessner","Bettina Kirchgäßner",{"slug":564,"name":565},"klem","Yannic Klem",{"slug":567,"name":568},"klenk","Timo Klenk",{"slug":9,"name":570},"Tobias Knell",{"slug":572,"name":573},"knoll","Anna-Lena Knoll",{"slug":575,"name":576},"knorre","Matthias Knorre",{"slug":578,"name":579},"koenig","Melanie König",{"slug":581,"name":582},"kraft","Thomas Kraft",{"slug":584,"name":585},"krupicka","Florian Krupicka",{"slug":587,"name":588},"kuehn","Christian Kühn",{"slug":590,"name":591},"lange","Christian Lange",{"slug":593,"name":594},"larrasz","Luca Arrasz",{"slug":596,"name":597},"leist","Sascha Leist",{"slug":599,"name":600},"lihs","Michael Lihs",{"slug":602,"name":603},"linsin","David Linsin",{"slug":605,"name":606},"maniyar","Christian Maniyar",{"slug":608,"name":609},"martin","Björnie",{"slug":611,"name":612},"martin-koch","Martin Koch",{"slug":614,"name":615},"matt","Tobias Matt",{"slug":617,"name":618},"mennerich","Christian Mennerich",{"slug":620,"name":621},"menz","Alexander Menz",{"slug":623,"name":624},"meseck","Frederick Meseck",{"slug":626,"name":627},"messner","Oliver Messner",{"slug":629,"name":630},"michael-ploed","Michael Plöd",{"slug":632,"name":633},"mies","Marius Mies",{"slug":635,"name":636},"mihai","Alina Mihai",{"slug":638,"name":639},"moeller","Jörg Möller",{"slug":641,"name":642},"mohr","Rebecca Mohr",{"slug":644,"name":645},"moretti","David Moretti",{"slug":647,"name":648},"mueller","Sven Müller",{"slug":650,"name":651},"muessig","Alexander Müssig",{"slug":653,"name":654},"neupokoev","Grigory Neupokoev",{"slug":656,"name":657},"nussbaecher","Carmen Nussbächer",{"slug":659,"name":660},"ochs","Pascal Ochs",{"slug":662,"name":663},"oelhoff","Jan Oelhoff",{"slug":665,"name":666},"oengel","Yasin Öngel",{"slug":668,"name":669},"oezsoy","Enis Özsoy",{"slug":671,"name":672},"posch","Maya Posch",{"slug":674,"name":675},"ralfmueller","Ralf Müller",{"slug":677,"name":677},"redakteur",{"slug":679,"name":680},"reich","Michael Reich",{"slug":682,"name":683},"reinhard","Karl-Ludwig Reinhard",{"slug":685,"name":686},"rmueller","Rebecca Müller",{"slug":688,"name":689},"rosum","Jan Rosum",{"slug":691,"name":691},"rueckert",{"slug":693,"name":694},"ruessel","Sascha Rüssel",{"slug":696,"name":697},"sauter","Moritz Sauter",{"slug":699,"name":700},"schaefer","Julian Schäfer",{"slug":702,"name":703},"scherer","Petra Scherer",{"slug":705,"name":706},"schlicht","Anne Schlicht",{"slug":708,"name":709},"schmidt","Jürgen Schmidt",{"slug":711,"name":712},"schneider","Tobias Schneider",{"slug":714,"name":715},"seber","Benjamin Seber",{"slug":717,"name":718},"sommer","Marc Sommer",{"slug":720,"name":721},"speaker-fels","Jakob Fels",{"slug":723,"name":724},"speaker-gierke","Oliver Gierke",{"slug":726,"name":727},"speaker-krupa","Malte Krupa",{"slug":729,"name":730},"speaker-mader","Jochen Mader",{"slug":732,"name":733},"speaker-meusel","Tim Meusel",{"slug":735,"name":736},"speaker-milke","Oliver Milke",{"slug":738,"name":739},"speaker-paluch","Mark Paluch",{"slug":741,"name":742},"speaker-schad","Jörg Schad",{"slug":744,"name":745},"speaker-schalanda","Jochen Schalanda",{"slug":747,"name":748},"speaker-schauder","Jens Schauder",{"slug":750,"name":751},"speaker-unterstein","Johannes Unterstein",{"slug":753,"name":754},"speaker-wolff","Eberhard Wolff",{"slug":756,"name":757},"speaker-zoerner","Stefan Zörner",{"slug":759,"name":760},"stefan-belger","Stefan Belger",{"slug":762,"name":763},"steinegger","Roland Steinegger",{"slug":765,"name":766},"stern","sternchen synyx",{"slug":768,"name":768},"synyx",{"slug":770,"name":771},"szulc","Mateusz Szulc",{"slug":773,"name":774},"tamara","Tamara Tunczinger",{"slug":776,"name":777},"theuer","Tobias Theuer",{"slug":779,"name":780},"thieme","Sandra Thieme",{"slug":782,"name":783},"thies-clasen","Marudor",{"slug":785,"name":786},"toernstroem","Olle Törnström",{"slug":788,"name":789},"ullinger","Max Ullinger",{"slug":791,"name":792},"ulrich","Stephan Ulrich",{"slug":794,"name":795},"wagner","Stefan Wagner",{"slug":797,"name":798},"weigel","Andreas Weigel",{"slug":800,"name":801},"werner","Fabian Werner",{"slug":803,"name":804},"wolke","Sören Wolke",["Reactive",806],{"$scookieConsent":807,"$ssite-config":809},{"functional":808,"analytics":808},false,{"_priority":810,"env":814,"name":815,"url":816},{"name":811,"env":812,"url":813},-10,-15,0,"production","nuxt-app","https://synyx.de",["Set"],["ShallowReactive",819],{"category-lists":-1,"authors":-1},"/blog/tags/lists"]