2016-07-23 3 views
1

Я следующий style.xml в res/values/ папке:Стиль отображается в эмуляторе, но не на моем устройстве

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:colorBackground">#000000</item> 
</style> 

и следующий макет для моей основной деятельности, где я использовал style="@style/AppTheme":

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    style="@style/AppTheme"          // here I've used It. 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.kaushal28.wakeupplease.MainActivity"> 

    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Start" 
      android:id="@+id/startAlarm" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/stop" 
      android:text="Stop"/> 
    </LinearLayout> 
</RelativeLayout> 

У меня устройство с Android 4.2.2 Jelly Bean и эмулятор имеют последний Marsh mellow. Я думаю, что проблема заключается только в этой разнице. У меня минимальный SDK версии 15 для этого проекта.

Я попытался изменить targetSDKVersion на 15 в Build.Gradle. Но это не могло решить мою проблему.

Что должно быть отображено: Image of Emulator.

Что отображения: enter image description here

Я ожидаю, что черный цвет фона.

+0

Что не настраивается? Можно ли поделиться некоторыми снимками экрана? – W0rmH0le

+0

okay wait ....... –

+0

@GuilhermeP посмотреть скриншоты –

ответ

0

Попробуйте использовать android:windowBackground вместо android:colorBackground

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowBackground">@android:color/black</item> 
</style> 

Почему?

На вашем экране я увидел, что вы пытаетесь установить фон окна. Итак, лучшим атрибутом для этого является android:windowBackground.

Ваш AppTheme не является переопределяющим android:windowBackground .. Он был только переопределяющим android:colorBackground.

Поскольку вы не переопределяете android:windowBackground, для Android будет использоваться цвет, определенный в родительской теме (Theme.AppCompat.Light.DarkActionBar).

Так, Android использовал:

<item name="colorBackgroundFloating">@color/background_floating_material_light</item> 

и

<color name="background_material_light">@color/material_grey_50</color> 
<color name="material_grey_50">#fffafafa</color> 

Это почти белого цвета.

Устройство против студии

Я буду честен .. Я не совсем уверен, почему устройство игнорирует android:colorBackground в то время как эмулятор его, используя ...

Возможно, это версия API или, возможно, это просто нормальное поведение, так как ваше устройство показывает тему, применяемую к Activity и внутри целого контекста. Ваше устройство будет всегда немного отличаться от инструмента предварительного просмотра Studio Studio Layout.

Для любого экземпляра, я рекомендую использовать android:windowBackground, если вы хотите отправить весь фон окна ...

android:colorBackground может влияет не только на фоне главного окна, но и всех компонентов например если вы не переопределите его в компоновке компонентов.(эта часть была получена от here)

+0

Это сработало. Какова причина? –

+0

Для всех параметров я должен найти такие альтернативы при использовании стилей? –

+1

@ Kaushal28 я уточнил ответ – W0rmH0le

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