Autore Topic: Cambiare colore action bar  (Letto 1376 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Cambiare colore action bar
« il: 08 Luglio 2015, 01:27:28 CEST »
0
Ciao amici volevo chiedervi una cosa. Sto ottimizzando la mia app per il nuovo sistema operativo Lollipop e ho deciso di aggiungere un'immagine nella title bar. Ora però sorge un problema, in quanto vi è quella piccolissima parte dello schermo in alto (dove viene indicata la carica della batteria, l'orologio ecc...) che è di colore celeste. A me servirebbe cambiarlo, è possibile?

Offline Bo

  • Utente junior
  • **
  • Post: 68
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note 3
  • Sistema operativo:
    windows 10
Re:Cambiare colore action bar
« Risposta #1 il: 08 Luglio 2015, 02:00:11 CEST »
+1
Devi creare in res una cartella values-v21 dove c'è un file styles.xml del genere:

Codice (Java): [Seleziona]
<resources>

    <style parent="Theme.AppCompat.Light" name="AppTheme.Base">

        <item name="android:colorPrimary">@color/primary</item> /** cambia il colore alla ActionBar **/
        <item name="android:colorPrimaryDark">@color/primaryDark</item> /** cambia il colore della Status Bar, dove viene indicata la carica della batteria, l'orologio ecc...**/

    </style>


https://developer.android.com/training/material/theme.html#StatusBar

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare colore action bar
« Risposta #2 il: 10 Luglio 2015, 15:05:44 CEST »
0
Grazie BO
Senti visto che ti vedo abbastanza ferrato nel material design volevo chiederti una cosa...sto ottimizzando la mia app per lollipop.  Volevo chiederti una cosa: se modifico la mia app e imposto una tema specifico del material, dopo gli utenti che hanno un sistema precedente, avranno problemi? e meglio impostare il tema di default così se si ha lillipop si vedrà il tema del material e chi ha versioni precedenti cera quella di default del proprio sistema?

Post unito: 10 Luglio 2015, 16:16:11 CEST
Devi creare in res una cartella values-v21 dove c'è un file styles.xml del genere:

Codice (Java): [Seleziona]
<resources>

    <style parent="Theme.AppCompat.Light" name="AppTheme.Base">

        <item name="android:colorPrimary">@color/primary</item> /** cambia il colore alla ActionBar **/
        <item name="android:colorPrimaryDark">@color/primaryDark</item> /** cambia il colore della Status Bar, dove viene indicata la carica della batteria, l'orologio ecc...**/

    </style>


https://developer.android.com/training/material/theme.html#StatusBar


Comunque ho fatto come hai detto tu, ho impostato il colore della statusBar e nello splashScreen della mia app funziona però quando poi passa alle altre activity non mi funziona(compare il colore di default celeste). Secondo me perché nelle altre activity, nell'azione bar non ho impostato il colore, ma bensì un immagine, in questo modo:

Codice: [Seleziona]
ActionBar bar = getActionBar();
        bar.setBackgroundDrawable(getResources().getDrawable(R.drawable.titlelogo));
Probabilmente questa cosa va in conflitto con il cambio di colore della statusBar.
Cosa potrei fare per far apparire il colore scelto anche in queste activity in cui ho impostato l'immagine?
Grazie per l'aiuto.
« Ultima modifica: 10 Luglio 2015, 16:16:11 CEST da moskino11, Reason: Merged DoublePost »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Cambiare colore action bar
« Risposta #3 il: 10 Luglio 2015, 17:16:38 CEST »
+1
Forse hai impostato lo style solo nel tag Activity del tuo manifest, invece dovrebbe per il tuo caso essere nel tag application

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare colore action bar
« Risposta #4 il: 12 Luglio 2015, 15:10:43 CEST »
0
Forse hai impostato lo style solo nel tag Activity del tuo manifest, invece dovrebbe per il tuo caso essere nel tag application

mmm... ho controllato.
Il manifesto sembra corretto...
Codice (XML): [Seleziona]
 <application
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >

        <!-- Splash screen -->
        <activity
           android:namebla bla bla.........

e nel file styles ho questo:

Codice (XML): [Seleziona]
<resources>

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

</resources>

Offline Bo

  • Utente junior
  • **
  • Post: 68
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note 3
  • Sistema operativo:
    windows 10
Re:Cambiare colore action bar
« Risposta #5 il: 12 Luglio 2015, 16:51:44 CEST »
+1
Prova a creare un altro style tag che applichi a tutte le altre activity nel manifest:

1) in styles.xml

Codice (Java): [Seleziona]
<style parent="AppTheme_Activities" name="AppTheme2"> </style>

    <style parent="Theme.AppCompat.Light" name="AppTheme_Activities">

         /** quello che ti interessa qui... **/

    </style>

2) styles-v21:

Codice (Java): [Seleziona]
<style parent="Theme.AppCompat.Light" name="AppTheme_Activities">

        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primaryDark</item>

    </style>

3) in ogni tag di activity nel manifest:

Codice (Java): [Seleziona]
android:theme="@style/AppTheme2"

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare colore action bar
« Risposta #6 il: 15 Luglio 2015, 14:39:33 CEST »
0
mmm questa soluzione la vedo un po macchinosa...l'ho provata a fare ma ho sicuramente sbagliato qualcosa perché durante la compilazione mi da errore. Ho provato a fare una cosa più semplice: sono andato nell'activity_main.xml (li dove la status bar compare di colore celeste) ed ho aggiunto questa riga di codice:

Codice (XML): [Seleziona]
    android:theme="@style/AppTheme">
La cosa strana è che se vado nell'anteprima del file xml, ottengo il colore desiderato però poi andando ad emulare l'app non cambia nulla e continua ad essere di colore celeste. :( Perke?

Post unito: [time]15 Luglio 2015, 15:05:42 CEST[/time]
Prova a creare un altro style tag che applichi a tutte le altre activity nel manifest:

1) in styles.xml

Codice (Java): [Seleziona]
<style parent="AppTheme_Activities" name="AppTheme2"> </style>

    <style parent="Theme.AppCompat.Light" name="AppTheme_Activities">

         /** quello che ti interessa qui... **/

    </style>

2) styles-v21:

Codice (Java): [Seleziona]
<style parent="Theme.AppCompat.Light" name="AppTheme_Activities">

        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primaryDark</item>

    </style>

3) in ogni tag di activity nel manifest:

Codice (Java): [Seleziona]
android:theme="@style/AppTheme2"


Comunque ho capito dove si trova l'errore del mio programma. Allora nel main activity ho impostato il tema nel file java in questo modo:

Codice (Java): [Seleziona]
setTheme(android.R.style.Theme_DeviceDefault_Light);
e contemporaneamente nel file style ho un'altro tema :

Codice (XML): [Seleziona]
 <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="android:colorPrimaryDark">@color/ColorPrimaryDark</item>
    </style>

Penso sia proprio questo il problema di tutto.
Premesso che io voglio che tutte le activity presentino il tema
Codice (Java): [Seleziona]
setTheme(android.R.style.Theme_DeviceDefault_Light);
in style come lo devo modificare visto che non mi compare tra quelli predefiniti?

Post unito: 15 Luglio 2015, 16:11:26 CEST
Ho risolto  :-)

Allora nel file style.xml ho impostato il tema e il colore della status bar in questo modo:

Codice (XML): [Seleziona]
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.DeviceDefault.Light">
        <!-- Customize your theme here. -->
        <item name="android:colorPrimaryDark">@color/ColorPrimaryDark</item>
        <item name="android:colorPrimary">@color/ColorPrimary</item>
    </style>



</resources>

e poi nel file color.xml ho impostato i colori :

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="ColorPrimaryDark">#009933</color>
    <color name="ColorPrimary">#000000</color>
</resources>

e nei file .java ho rimosso il codice in cui impostavo il tema e adesso non ho più problemi ;)
« Ultima modifica: 15 Luglio 2015, 16:11:27 CEST da moskino11, Reason: Merged DoublePost »