I am implementing a Navigation Drawer like that in Google Play Store, and I want to set selected item of the listview in the DrawerLayout. But then I found that in touch mode items cannot be selected, and one item was set to be checked just after I click it. However all of the item remained the same white background.

I want the checked item have grey highlighted background so I tried View.setBackgroundColor(). But then I found that the ripple effect disappeared! It seemed that the ripple effect is defined in the background resource.

I google everywhere but found no solution. Some results suggest using tags to make custom background, but requires API 21.

So finally my question is, how to create custom background that shows ripple effect on L device, while show normal highlight background on pre-L device?