cmccurdy
cmccurdy

Reputation: 23

Coloring ListView row depending on contents

I'm trying to have a ListView that will display each row in a given color, depending on the content of that row, but still allow the selector to draw. As it is now, if I call View.setBackgroundColor on a row, it colors the background properly, but the selector isn't drawn.

Upvotes: 2

Views: 239

Answers (1)

CommonsWare
CommonsWare

Reputation: 1006839

You have three major options.

One approach is to use android:drawSelectorOnTop="true" and set the selector of your ListView to be something that is transparent/translucent, so when it is drawn over top of a row, you can still see the row contents.

Or, you will need to set the row backgrounds not to a color, but to a StateListDrawable, where the background color is set to be transparent when the row is selected, so the regular selector (drawn behind the row) is visible.

You are also welcome to register a selection listener with the ListView and do custom color changes based on when the selection changes.

Upvotes: 2

Related Questions