2015-01-29 2 views
0

Существует a post of the same question and it has received an answer. Я подозреваю, что мой случай отличается, и это может указывать на общую проблему конфигурации проекта. windowTranslucentNavigation для API 19. Я установил targetSdkVersion inn как build.gradle, так и манифесты. В build.gradle:Невозможно использовать 'android: windowTranslucentNavigation'

defaultConfig { 
applicationId "xxx" 
minSdkVersion 9 
targetSdkVersion 21 
// Enabling multidex support. 
multiDexEnabled true 

}

В манифестов:

<uses-sdk 
android:minSdkVersion="9" 
android:targetSdkVersion="21" /> 

Android Студия четко знает о windowTranslucentNavigation. Следующее предупреждение показывает это: windowTranslucentNavigation warning

Когда проект будет построен, генерируется следующее сообщение об ошибке:

Ошибка: (7, 29) Нет ресурсов не найдено, что соответствует данному имени: Аттрибут «windowTranslucentNavigation».

Вот содержание themes.xml:

<resources> 
<!-- the theme applied to the application or activity --> 
<style name="OverlayingActionBarTheme" 
    parent="@style/Theme.AppCompat"> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="android:actionBarStyle">@style/TransparentActionBar</item> 
    <item name="android:windowTranslucentNavigation">true</item> 
    <!-- Support library compatibility --> 
    <item name="windowActionBarOverlay">true</item> 
    <item name="actionBarStyle">@style/TransparentActionBar</item> 
    <item name="windowTranslucentNavigation">true</item> 
</style> 
<!-- ActionBar styles --> 
<style name="TransparentActionBar" 
    parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:background">@color/black_overlay</item> 

    <!-- Support library compatibility --> 
    <item name="background">@color/black_overlay</item> 
</style> 

Может кто-нибудь предложить совет о том, как это исправить?

ответ

2

Ответ, который предлагает вам изменить ваш minSdkVersion, чтобы поддержать это, является не совсем правильным. Функция может не поддерживаться в версиях старше 19 лет, но вы можете использовать ее, не меняя minSdkVersion.

Вы должны создать файл themes.xml в папке с именем values-v19. Это позволит вам использовать функции стиля и темы SDK 19+ на любом устройстве, на котором выполняется эта версия или выше.

Подробнее о том, как это работает: Supporting Different Platform Versions.

+0

Большое спасибо за подсказку. Как описано в моем первоначальном вопросе, мне нужна специальная тема (OverlayingActionBarTheme). Как я могу использовать windowTranslucentNavigation для API + в дополнение к OverlayingActionBarTheme для API19 +? – Hong

+1

Есть много вопросов, уже отвечающих на вопрос о том, как создать базовую тему, с расширением на более поздних версиях. Один пример: http://stackoverflow.com/questions/9140085/different-theme-for-different-android-sdk-versions –

+0

Благодарим вас за все советы. Они работают! – Hong

1

Вам нужно будет изменить minSdkVersion на 19, если вы хотите его поддержать или не использовать. В любом другом случае, например, вызов метода, поддерживаемого только в новой версии, вы можете программным способом не называть его, если ваша версия ниже, но в этом случае вы не можете изменить стиль программно в зависимости от версии.

+0

Большое спасибо за ваш быстрый ответ. После прочтения вашего ответа я добавил содержимое thems.xml. Вы можете видеть, что есть два элемента (windowActionBarOverlay и actionBarStyle), которые поддерживаются в API11 и выше. Они работают без проблем, хотя minSdkVersion равно 9. Мне интересно, почему windowTranslucentNavigation не так. – Hong

+1

Эти свойства включены в библиотеку AppCompat. –

+0

Я вижу. Есть ли простой способ узнать, что находится в библиотеке поддержки. Я взглянул на https://developer.android.com/tools/support-library/features.html, он слишком общий. – Hong

Смежные вопросы