2017-07-28 10 views
2

私は使用していますOption 2: Use an intent to launch the autocomplete activityandroid google placeのオートコンプリートアクティビティでプレースホルダテキストを変更するにはどうすればよいですか?

"検索する"プレースホルダーのテキストを "あなたの都市を入力"などに変更することは可能ですか?私はa solutionを見つけましたが、javascriptの場合は、アンドロイドもサポートしています。

それはa PlaceAutocompleteFragmentで行うことができたようですが、独自のEditTextを使用してインテントを使用してオートコンプリートを開始しています。

enter image description here

+0

好きですか? –

+0

いいえ、私は通常のEditTextビューを使用しています。ユーザーがそれをクリックすると、オートコンプリートアクティビティが開始されます。意図インテント=新しいPlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY) .setFilter(typeFilter) 。ビルド(this); startActivityForResult(インテント、PLACE_AUTOCOMPLETE_REQUEST_CODE); – thanhbinh84

+0

そのためにAutoCompleteTextViewを使用できます。これを使用すると、別のアクティビティにジャンプする必要もありません。 –

答えて

1

それはプレースホルダーテキストを変更する方法がないようですオートコンプリートアクティビティまたはPlaceAutocompleteFragmentを使用すると、内部でオートコンプリートアクティビティも使用されるためです。唯一の方法は、あなたが完全にコントロールできるAutoCompleteTextViewを使用することです。 Googleは、統合しやすく、優れたUXを提供する完全なサンプルコードも提供しています。

https://github.com/googlesamples/android-play-places/tree/master/PlaceCompleteAdapter

私はうまくいけば、それが将来的にサポートされる機能要求hereを、作成します。

0

あなたが探して何本か?

SearchView searchView = (SearchView) 
menu.findItem(R.id.menu_search).getActionView(); 
searchView.setQueryHint("Your text"); 
+0

メニューは何ですか? – thanhbinh84

2

残念ながら、オートコンプリートインテントでヒントテキストを変更する方法はありません。 PlaceAutocompleteFragmentのような独自のウィジェットを作成する必要があります。

4

いいえあなたがあなた自身を作成し​​なければならないよりもしたい場合、方法はありません。 しかし、あなたはEditText(Comment Sectionに言及しています)を使用しているので、このテクニックはあなたにとって有益かもしれません。

コード:

PlaceAutocompleteFragment autocompleteFragment; 
autocompleteFragment = (PlaceAutocompleteFragment) 
      getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 
    autocompleteFragment.setOnPlaceSelectedListener(this); 
    autocompleteFragment.setHint("Search New Location"); 

XML:

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="@dimen/left_drawable_padding" 
android:layout_marginTop="@dimen/margin_five" 
android:layout_marginLeft="@dimen/margin_five" 
android:layout_marginRight="@dimen/margin_five" 
android:background="@drawable/search_background" 
android:orientation="vertical"> 
    <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" 
     /> 

と私はuが独自の背景の形状(ACCあなたの必要性にする。)を作成する必要がありそうandroid:background="@drawable/search_background"を使用として。

最初の写真: enter image description here

セカンド写真: enter image description here

thrid写真: enter image description here

第四画像: enter image description here

+0

申し訳ありませんが、私はその時の答えを確認する時間がありませんでしたが、私は2番目の画像の '検索'テキストを変更する方法を意味しました。 – thanhbinh84

0

次の2つの方法でGoogleプレイスの機能を実現することができますPlaceAutocomplete.IntentBuilder 2を使用することにより 1)。)

CASE 1 PlaceAutocompleteFragmentを使用することにより:CASE 2

 private void openPlacesSearch() 
{ 
private static final int PLACE_AUTOCOMPLETE_REQUEST_CODE = 1001; 

     try { 
          Intent intent = 
            new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN) 
              .zzih("Enter pickup location") //set the hint text here 
              .build(this); 

          startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE); 
         } 
         catch (GooglePlayServicesRepairableException e) { 
          // TODO: Handle the error. 
         } catch (GooglePlayServicesNotAvailableException e) { 
          // TODO: Handle the error. 
         } 
} 

を:。 ) B "AddressSelectActivity.java" という名前の新しいアクティビティを作成)を定義することを忘れないでください。 manifest.xmlでその活動

ここでは、以下のコードです:

public class AddressSelectActivity extends Activity { 

    private static final String TAG = AddressSelectActivity.class.getSimpleName(); 
    private static final int PLACE_AUTOCOMPLETE_REQUEST_CODE = 1001; 
    private PlaceAutocompleteFragment autocompleteFragment; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_address_select); 
     addAddressSuggestionListener(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) 
     { 
      case PLACE_AUTOCOMPLETE_REQUEST_CODE: 

       if (resultCode == RESULT_OK) { 
        Place place = PlaceAutocomplete.getPlace(this, data); 
        Log.i(TAG, "Place: " + place.getName()); 

        LatLng latLng = place.getLatLng(); 

       } else if (resultCode == PlaceAutocomplete.RESULT_ERROR) { 
        Status status = PlaceAutocomplete.getStatus(this, data); 
        // TODO: Handle the error. 
        Log.i(TAG, status.getStatusMessage()); 

       } else if (resultCode == RESULT_CANCELED) { 
        // The user canceled the operation. 
       } 

       break; 
      default: 
       break; 
     } 
    } 

    private void addAddressSuggestionListener() 
    { 
     autocompleteFragment = (PlaceAutocompleteFragment) 
       getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 
autocompleteFragment.setHint("Search Your Location..."); 

     autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { 
      @Override 
      public void onPlaceSelected(Place place) { 
       // TODO: Get info about the selected place. 
       Log.i(TAG, "Place: " + place.getName()); 
      } 

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

'.zzih("ヒント ")'は、メソッドを解決できません。 –

+0

build()メソッドを見つけることができれば、そのクラス内のメソッドを検索して、そのメソッドを容易にします。 そのクラスに移動して手動で検索してください。 – Maddy

0

は、はい、それは可能であり、それはあなたがこのためにAutoCompleteTextViewを使用しています。この

EditText et = (EditText)findViewById(R.id.place_autocomplete_search_input); 
    et.setHint("enter your city"); 
関連する問題