Как сделать так, чтобы Google Place Pick выглядел как тема моего приложения?

Я хочу использовать Google Place Picker в своем приложении. Я перешел по этой ссылке https://developers.google.com/places/android-api/placepicker и добавил указатель мест в свой фрагмент, но он не дает цвет или тему моего приложения. Панель инструментов выбора места показывает белый цвет.

В документе написано, что сборщик берет colorPrimary из материальной темы приложения. у меня тоже есть colorPimary а также colorPrimaryDark я мой style.xml,

Что здесь не так?

код:

public class NameOfBusinessFragment extends Fragment {

    int PLACE_PICKER_REQUEST = 1;
    int RESULT_OK = -1;
    PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
    EditText category,location;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_name_of_business,
                    container, false);

            location = (EditText)view.findViewById(R.id.location);

            location.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    try {

                        startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
                    }
                    catch (GooglePlayServicesRepairableException e)
                    {
                        Toast.makeText(getActivity(),"ServiceRepaire Exception",Toast.LENGTH_SHORT).show();
                    }
                    catch (GooglePlayServicesNotAvailableException  e)
                    {
                        Toast.makeText(getActivity(),"SeerviceNotAvailable Exception",Toast.LENGTH_SHORT).show();
                    }
                }
            });

            return view;
        }
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == RESULT_OK) {
                Place place = PlacePicker.getPlace(data, getActivity());
                String toastMsg = String.format("Place: %s", place.getName());
                Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_LONG).show();
                location.setText(place.getName());
            }
        }
    }
}

Style.xml

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBarOverlay">false</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:windowContentOverlay">@null</item>

    <item name="android:editTextStyle">@style/EditTextStyle</item>

</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="colorControlNormal">@color/colorAccent</item>
    <item name="colorControlActivated">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

Как это получить?

1 ответ

Попробуйте заменить

startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);

с:

Intent placePickerIntent = builder.build(getActivity());
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    placePickerIntent.putExtra("primary_color", ContextCompat.getColor(this, R.color.colorPrimary));
    placePickerIntent.putExtra("primary_color_dark", ContextCompat.getColor(this, R.color.colorPrimaryDark));
}
startActivityForResult(placePickerIntent, PLACE_PICKER_REQUEST);

Выбор места не автоматически выбирает цвет из темы. Это ошибка, как обсуждено здесь. Также обратите внимание, что это взлом, а не реальное чистое решение.

Другие вопросы по тегам