我如何将谷歌地方选择器看作我的应用程序的主题?

时间:2016-06-10 06:02:10

标签: android material-theme gmsplacepicker

我想在我的应用中使用Google地方选择器。我已经关注此链接 https://developers.google.com/places/android-api/placepicker 并在我的片段中添加了选择器,但它没有得到我的应用程序的颜色或主题。地方选择器的工具栏显示白色。

它在文档中写道,选择器从app的材料主题中获取colorPrimary。我还有colorPimarycolorPrimaryDark我的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 个答案:

答案 0 :(得分:0)

尝试替换

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

地点选择器不会自动从主题中选择颜色。这是一个讨论here的错误。另请注意,这是一个黑客,而不是一个真正的清洁解决方案。