Ну не писать же две версии приложения — для 4.x и 5.x? А четверку можно будет выкинуть только через года два, не раньше. А тут заодно исправлены некоторые недоразумения 4й версии — например, попробуйте настроить внешний вид SearchView без использования AppCompat
Ну не две версии, а две темы — новую положить в values-v21 и наследовать от какой-нибудь android:Theme.Material.Light.DarkActionBar, а старую оставить как есть. Если хочется и вид самого контента менять, то это тоже достаточно легко делается через ресурсы и в большинстве случаев даже не требует написания кода. Внешний вид SearchView я настраивал и в 4.х, но, каюсь, через reflection.
Да и просто кажется странным делать приложения с новой темой для версий системы, в которых уже были свои внятные гайдлайны. Портировать Holo на 2.х имело смысл, потому что на 2.х до изобретения Holo нормальных интерфейсов не было в принципе.
Две темы создать — действительно не проблема. Но вот тогда и для использования того же Toolbar придется так же делать layout-v21, и в коде проверки делать для вызова setActionBar
Если пишешь свое собственное приложение — ну да, можно побеседовать на эту тему. Я б так вообще сразу для Android Lollipop только писал.
Но как правило пишешь для заказчика и для людей, которым даже поддержку от 14 версии приходиться объяснять.
Ухх… Вот и пришло для меня наконец время разобраться ActionBar'ами! А то как только шерлок появился (давно же это было), я как-то решил, что обойдусь без них.
Кстати, попробовал тему описать как в примере выше, и получаю «No resource found that matches the given name: attr 'colorPrimary'.»
При этом я могу задать его с префиксом android:colorPrimary, но кажется это немного не то. При этом сама тема подцепилась нормально, т.е. на Theme.AppCompat.Light не ругается.
Не знаете в чем может быть дело? Использую по старинке эклипс.
Для тех, кому не помогло. После импорта AppCompat, если выскакивают эти ошибки с ресурсами, то в файлике project.properties замените target=android-19 на target=android-21
AppCompat v21 — Material Design для пре-Lollipop устройств