8

我正在使用來自Google Play服務的PlacePicker圖庫啓動新活動。新的活動/選擇器有一個工具欄(操作欄),默認情況下它不是樣式。PlacePicker不會拾取材質主題

PlacePicker文檔指出

如果您使用的材料主題, 的地方選擇器繼承了主題colorPrimary和colorPrimaryDark 屬性在你的應用程序中設置自定義顏色。

我有一個主題在我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> 

,我已經設置了主題

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

的placepicker通過創建我的Android宣言文件中使用以下代碼:

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

但是,工具b ar沒有風格。和以前一樣,它有一個白色的背景和黑色的文字。 有趣的是我注意到我自己的工具欄(操作欄)的樣式。

如何強制placepicker活動採用我的主題?

+0

下是做什麼用的發射活動的造型? – ianhanniballake

+0

@ianhanniballake一個主題適用於整個應用程序,所以我會接受所有基礎活動應該是相同的主題。 –

+0

因此,只需確認,您在啓動「PlacePicker」的活動中沒有「android:theme」?你還可以包含你用來創建'PlacePicker'的代碼嗎? – ianhanniballake

回答

7

這是一個acknowledged issue開發團隊。

目前在PlacePicker上設置自定義主題顏色 時存在已知問題。現在,您可以通過定義兩個名稱爲「主」和「primary_dark」的 顏色來解決此問題 - 這些將應用於PlacePicker的 。

不幸的是,在主題上設置primary/primaryDark屬性 目前不會影響PlacePicker樣式。

編輯: 似乎現在修復。

這應該在Google Play Services 10.0中解決。 Place Picker和 Autocomplete Widget將使用您的應用中的colorPrimary和colorPrimaryDark 顏色。

+0

您是否找到改變標題文字顏色的方法? – Max

+0

@最大否(希望他們很快就能修復) –

+1

您知道如何在環聊中獲得搜索選項嗎? https ://www.evernote.com/shard/s526/sh/34204375-b79d-4cce-81cb-e569294d42b8/32d08a49b980b45b153fb478d0e2bf3e – Max

2

正如你在你的問題中提供的文件中提到:

如果您使用的材料主題在你的應用程序中設置自定義顏色, 的地方選擇器繼承了主題colorPrimary和colorPrimaryDark 屬性。

但是,你有沒有在你的style.xml文件中指定的實際材料主題(Theme.Material.Light);相反,您已經使用了Theme.AppCompat.Light,儘管它的設計與Material主題相同,但它是一個支持庫,旨在爲Android 2.1(API 7)提供對Material主題的向後兼容性。我的猜測是PlacePicker庫僅繼承了真實Material主題中的colorPrimarycolorPrimaryDark屬性,而不是支持庫。

一個簡單的方法來測試,這將是修改style.xml文件使用真材實料的主題,看看,如果這個工程:

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

當然,唯一的缺點是材料主題只適用於API≥21,所以,如果這樣做,那麼你將被限制在僅使用棒棒糖的設備。

最後,作爲阿里納斯的Theme.AppCompat支持庫不使用android:命名空間,所以你的原始style.xml文件可以如下縮短:

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

設置原生材質設計的顏色對我無效。 :( –

+2

Android。其中設置顏色是火箭sciene – Arthur

0

要解決問題的工具欄主題的Android將選擇器上的OS棒棒糖

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