2015-07-04 18 views
11

Questo è il mio xml barra degli strumentiCome modificare il tema della barra degli strumenti di AppCompat v21 a livello di programmazione?

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 

    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    android:layout_height="@dimen/toolbar_height" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:background="@color/primary_color"> 



</android.support.v7.widget.Toolbar> 

voglio cambiare app: tema di programmazione. Come faccio a fare questo?

+0

Non è possibile modificare lo stile e il tema. Che cosa vuoi fare? Forse c'è una soluzione diversa. – krystian71115

+0

Beh, voglio consentire agli utenti di scegliere il colore della barra degli strumenti .... in base al colore voglio cambiare il tema .. quindi se scelgono un tema di colore scuro sarebbe ThemeOverlay.AppCompat.Dark.ActionBar altrimenti sarebbe luce tema –

+0

E link per rispondere come impostare il colore delle tessere: http://stackoverflow.com/a/26594674/2536878 – krystian71115

risposta

18

È possibile farlo a livello di codice o con stile:

Toolbar toolbar; // your toolbar 
toolbar.setBackgroundColor(newColor); // i don't tested this method. Write if it's not working 
toolbar.setTitleTextColor(titleColor); // if toolbar is white set title to black, if toolbar is black set title to white 

Oppure si può farlo con stile:

Aggiungere attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="toolbarStyle" format="reference"/> 
</resources> 

Ed ora cambiare toolbar.xml :

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 

    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    android:layout_height="@dimen/toolbar_height" 
    app:theme="?attr/toolbarStyle" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:background="@color/primary_color"> 



</android.support.v7.widget.Toolbar> 

E in styles.xml (se non si dispone di questo crearlo):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyStyle.Dark" parent="AppCompat.Theme"> 
     <item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 
    </style> 
    <style name="MyStyle.Light" parent="AppCompat.Theme.Light"> 
     <item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Light.ActionBar</item> 
    </style> 
</resources> 

Se si seleziona secondo metodo (con gli stili) è necessario riavviare l'attività e utilizzare il metodo setTheme prima super.onCreate()

Spero di averti aiutato.

+0

Ciao, Krystian. Il primo modo non funziona. Ma forse ora è il modo in cui come cambiare la barra degli strumenti tra i frammenti che si sostituiscono all'interno di un'istanza di Attività? È necessario evitare la ricreazione dell'attività. Grazie –

6

Utilizzare il seguente frammento di codice per aggiungere un tema:

Toolbar toolbar; 
toolbar.getContext().setTheme(R.style.ThemeOverlay_AppCompat_Dark_ActionBar); 
+0

Ha lavorato per me .. Grazie –

Problemi correlati