8

Ich verwende eine PlacePicker Bibliothek von Google Play-Dienste, die eine neue Aktivität startet. Die neue Aktivität/Picker verfügt über eine Symbolleiste (Aktionsleiste), die standardmäßig nicht formatiert ist.PlacePicker nicht abholen up Material Thema

PlacePicker Dokumentation besagt, dass

Wenn Sie benutzerdefinierte Farben in Ihrer Anwendung mit dem Material Thema gesetzt, der Ort Picker erbt die colorPrimary und colorPrimaryDark Attribute aus dem Thema.

Ich habe ein Thema in meinem style.xml Datei:

<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> 

und ich habe das Thema gesetzt in meinem Android-Manifest-Datei verwendet werden

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

Die placepicker erstellt wird der folgende Code:

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."); 
} 

Allerdings der Toolb ar wird nicht gestylt. Wie zuvor hat es einen weißen Hintergrund und schwarzen Text. Es ist interessant zu bemerken, dass meine eigene Symbolleiste (Actionbar) gestylt wird.

Wie erzwinge ich die placepicker Tätigkeit mein Thema zu übernehmen?

+0

Was das Styling von der Startaktivität verwendet wird? – ianhanniballake

+0

@ianhanniballake ein Thema wird auf die gesamte Anwendung angewendet, so würde ich akzeptieren, alle zugrunde liegenden Aktivitäten sollten das gleiche Thema sein. –

+0

Also, nur um zu bestätigen, haben Sie kein 'android: theme' auf der Aktivität, die den' PlacePicker' startet? Kannst du auch den Code verwenden, den du benutzt hast, um den 'PlacePicker' zu erstellen? – ianhanniballake

Antwort

7

Dies ist ein acknowledged issue durch das Entwicklungsteam.

Es gibt derzeit ein bekanntes Problem beim Festlegen von benutzerdefinierten Designfarben auf dem PlacePicker. Jetzt können Sie das umgehen, indem Sie zwei Farben mit den Namen "primary" und "primary_dark" definieren - diese werden auf den PlacePicker angewendet.

Leider hat die Einstellung der primary/primaryDark -Eigenschaft auf ein Thema momentan keinen Einfluss auf das PlacePicker-Styling.

EDIT: Scheint jetzt behoben zu werden.

Dies sollte in Google Play Services 10.0 behoben werden. Place Picker und Autocomplete Widget verwendet die Farben ColorPrimary und ColorPrimaryDark Farben aus Ihrer App.

+0

Haben Sie die Möglichkeit, Titel Textfarbe zu ändern? – Max

+0

@Max No :(Hoffentlich sie zu beheben, dass bald. –

+1

Wissen Sie, wie es neue Option zu bekommen wie Hangout? https : //www.evernote.com/shard/s526/sh/34204375-b79d-4cce-81cb-e569294d42b8/32d08a49b980b45b153fb478d0e2bf3e – Max

2

Wie in der Dokumentation erwähnt, dass Sie in Ihrer Frage zu finden:

Wenn Sie benutzerdefinierte Farben in Ihrer Anwendung mit dem Material Thema gesetzt, der Ort Picker erbt die colorPrimary und colorPrimaryDark Attribute aus dem Thema .

Sie haben jedoch die tatsächlichen Werkstoff Thema keine Angabe (Theme.Material.Light) in Ihrer style.xml-Datei; vielmehr haben Sie Theme.AppCompat.Light verwendet, die, während sie das gleiche wie das Material Thema, eine Support-Bibliothek ist aussehen und funktionieren entworfen, um Rückwärtskompatibilität für das Material Thema der ganzen Weg zu schaffen entworfen 2.1 (API 7) auf Android. Meine Vermutung wäre, dass die PlacePicker Bibliothek nur erbt die colorPrimary und colorPrimaryDark Attribute aus dem wahren Werkstoff Thema und nicht die Support-Bibliothek.

Eine einfache Möglichkeit, dies zu testen wäre Ihre style.xml Datei zu modifizieren, um das reale materielle Thema zu verwenden und sehen, ob das funktioniert:

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

Der einzige Nachteil ist natürlich, dass das Material Thema in nur verfügbar ist, API ≥ 21, wenn dies funktioniert, sind Sie auf Geräte beschränkt, die nur Lollipop verwenden.

schließlich als Nebenbei bemerkt, die Theme.AppCompat Support-Bibliotheken verwenden Sie nicht den android: Namespace, so dass Ihre ursprüngliche style.xml Datei verkürzt werden kann, wie folgt:

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

Das Festlegen der Farben für das native Materialdesign funktionierte nicht für mich. :( –

+2

Android. Wo das Einstellen von Farben Rakete sciene – Arthur

0

Um Probleme Symbolleiste Thema Android Platz Picker auf OS unter Lollipop fix

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); 
Verwandte Themen