8

Sto utilizzando una libreria PlacePicker da Google Play Services che avvia una nuova attività. La nuova attività/selettore ha una barra degli strumenti (barra di azione) che non ha uno stile predefinito.PlacePicker non rileva il tema materiale

documentazione PlacePicker afferma che

se si imposta colori personalizzati nell'applicazione utilizzando il tema materiale, il posto selettore eredita le colorPrimary e colorPrimaryDark attributi dal tema.

ho un tema nel mio file style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="colorPrimary">#5665bb</item> 
    <item name="android:colorPrimary">#5665bb</item> 
    <item name="colorPrimaryDark">#41456b</item> 
    <item name="android:colorPrimaryDark">#41456b</item> 
</style> 

e ho impostato il tema da utilizzare nel mio file manifesto Android

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

Il placepicker è stato creato da il seguente codice:

try { 
    PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); 
    Intent intent = intentBuilder.build(Main.this); 
    // Start the intent by requesting a result, 
    // identified by a request code. 
    startActivityForResult(intent, REQUEST_PLACE_PICKER); 
} catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) { 
    Log.e("", "Error with Google Play lib."); 
} 

Tuttavia, il toolb ar non viene stilizzato. Come prima ha uno sfondo bianco e testo nero. È interessante notare che la mia barra degli strumenti (la barra di azione) viene personalizzata.

Come faccio a forzare l'attività del placepicker ad adottare il tema?

+0

Qual è lo stile utilizzato da attività di lancio? – ianhanniballake

+0

@ianhanniballake un tema è applicato a tutta l'applicazione quindi vorrei accettare tutte le attività sottostanti dovrebbe essere lo stesso tema. –

+0

Quindi, solo per confermare, non hai 'android: theme' sull'attività che sta lanciando il' PlacePicker'? Puoi includere anche il codice che usi per creare il 'PlacePicker'? – ianhanniballake

risposta

7

Questa è una acknowledged issue dal team di sviluppo.

C'è attualmente un problema noto con l'impostazione di colori tema personalizzati su il PlacePicker. Per ora puoi aggirare il problema definendo due colori con i nomi "primario" e "primary_dark" - questi saranno applicati a PlacePicker.

Sfortunatamente l'impostazione della proprietà primary/primaryDark su un tema sarà non influenzando lo stile di PlacePicker al momento.

MODIFICA: Sembra essere risolto ora.

Questo problema deve essere risolto in Google Play Services 10.0. Place Picker e il widget di completamento automatico utilizza i colori colorPrimary e colorPrimaryDark colori dall'app.

+0

Hai trovato il modo di cambiare il colore del testo del titolo? – Max

+0

@Max No :(Speriamo che risolveranno presto. –

+1

Sai come ottenere un'opzione di ricerca come Hangouts? https : //www.evernote.com/shard/s526/sh/34204375-b79d-4cce-81cb-e569294d42b8/32d08a49b980b45b153fb478d0e2bf3e – Max

2

Come è menzionato nella documentazione che hai fornito nella tua domanda:

Se si imposta colori personalizzati nell'applicazione utilizzando il tema materiale, il posto selettore eredita le colorPrimary e colorPrimaryDark attributi dal tema .

Tuttavia, non è stato specificato il reale Materiale tema (Theme.Material.Light) nel file style.xml; piuttosto, hai utilizzato Theme.AppCompat.Light che, sebbene sia progettato per funzionare e funzionare come il tema Materiale, è una libreria di supporto progettata per offrire la retrocompatibilità per il tema Materiale fino ad Android 2.1 (API 7). La mia ipotesi sarebbe che la libreria PlacePicker erediti solo gli attributi colorPrimary e colorPrimaryDark dal tema Materiale reale e non dalla libreria di supporto.

Un modo semplice per verificare questa potrebbe essere quella di modificare il file style.xml di utilizzare il vero tema materiale e vedere se questo funziona:

<style name="AppTheme" parent="android:Theme.Material"> 
    <item name="android:colorPrimary">#5665bb</item> 
    <item name="android:colorPrimaryDark">#41456b</item> 
</style> 

L'unico svantaggio, naturalmente, è che il tema materiale è disponibile solo in API ≥ 21, quindi, se funziona, sarà limitato ai dispositivi che utilizzano solo Lollipop.

Infine, come nota a margine, le librerie di supporto Theme.AppCompat non utilizzare lo spazio dei nomi android:, in modo che il file originale style.xml può essere abbreviato come segue:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="colorPrimary">#5665bb</item> 
    <item name="colorPrimaryDark">#41456b</item> 
</style> 
+0

L'impostazione dei colori per il design del materiale nativo non ha funzionato per me. :( –

+2

Android. Dove impostare i colori è rocket sciene – Arthur

0

per risolvere i problemi della barra degli strumenti tema Android di Picker su OS sotto Lollipop

PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); 
Intent intent = intentBuilder.build(getActivity()); 
    // if Build version sdk is under Lollipop, add intent extra 
    (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
     intent.putExtra("primary_color", getResources().getColor(R.color.colorPrimary)); 
     intent.putExtra("primary_color_dark", getResources().getColor(R.color.colorPrimaryDark)); 
    } 

//start intent 
startActivityForResult(intent, REQUEST_PLACE_PICKER_CODE);