android - 添加按钮以自动完成搜索框

时间:2016-12-26 22:04:26

标签: android google-places-api

我在我的Android应用中实现了Google的PlaceAutocompleteFragment,如下所示。 enter image description here

但我想最后添加一个按钮,谷歌地图有麦克风。

enter image description here

到目前为止,我的代码如下:

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    >
    <fragment
        android:id="@+id/place_autocomplete_fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
        />
</android.support.v7.widget.CardView>

放置选择代码:

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            String placeName = place.getName().toString();
            LatLng latLng = place.getLatLng();
            mMap.addMarker(new MarkerOptions().position(latLng).title(placeName));
            mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

        }
        @Override
        public void onError(Status status) {
            // TODO: Handle the error.
            Log.i(TAG, "An error occurred: " + status);
        }
    });

示例代码会很好。非常感谢你:))

1 个答案:

答案 0 :(得分:1)

很抱歉回复这么晚,但由于一些错误,我重新安装并下载了整个Android Studio和SDK

以下是我给你的建议: -

  1. 使用第3个库FloatingSearchView
  2. 要自定义你自己,但这需要一些时间分别到第3个库,这里有一些简单的教程可以帮助你Custom Google Place Autocomplete AndroidHow to customize PlaceAutocomplete widget dialog design to list places Question

  3. 尝试深入了解Google代码以进行自定义,知道这将通过扩展Google的课程并复制Google的整个代码然后进行编辑来实现。一个重生的课程

    最后一步我已深入了解代码,知道此方法是创建Google搜索的方法

    private void zzzG() {
    int var1 = -1;
    try {
        Intent var2 = (new PlaceAutocomplete.IntentBuilder(2)).setBoundsBias(this.zzaRk).setFilter(this.zzaRl).zzeq(this.editSearch.getText().toString()).zzig(1).build(this.getActivity());
        this.startActivityForResult(var2, 1);
    } catch (GooglePlayServicesRepairableException var3) {
        var1 = var3.getConnectionStatusCode();
        Log.e("Places", "Could not open autocomplete activity", var3);
    } catch (GooglePlayServicesNotAvailableException var4) {
        var1 = var4.errorCode;
        Log.e("Places", "Could not open autocomplete activity", var4);
    }
    if (var1 != -1) {
        GoogleApiAvailability var5 = GoogleApiAvailability.getInstance();
        var5.showErrorDialogFragment(this.getActivity(), var1, 2);
    }}
    

    另外,如果您遇到任何解决方案的问题,请给我反馈