向Google PlaceAutocompleteFragment添加边框

时间:2016-11-14 16:10:37

标签: android google-maps android-fragments autocomplete

我在Android应用中使用了Google商家信息自动填充片段。当我直接在LinearLayout的顶层使用片段时,一切正常:

<LinearLayout ...>
    <fragment
        android:id="@+id/findRidePlaceAutocompleteFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"/>
</LinearLayout>

这种布局导致了这个UI:

enter image description here

如您所见,小部件周围没有边框,而下方的TextView则有黑色边框。根据我的阅读,获得片段边框的一个技巧是将该片段嵌入到CardView中。这种方法实际上是由Google official documentation推荐的。请考虑以下修改后的布局:

<LinearLayout ...>
    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_gravity="left"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/main_border">

        <fragment
            android:id="@+id/findRidePlaceAutocompleteFragment"
            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>
</LinearLayout>

这里的诀窍是给CardView一个背景,上面有Google Places片段,这样前者就会显示为后者的边框。

但是这种修改后的布局会导致应用程序崩溃。有谁知道为什么会崩溃,或者我如何在Google PlaceAutocompleteFragment周围放置边框?

1 个答案:

答案 0 :(得分:3)

您可以为封闭的LinearLayout

设置自定义背景
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/main_border">
    <fragment
        android:id="@+id/findRidePlaceAutocompleteFragment"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

我使用您为android:background="@drawable/main_border"定义的CardView {。}}。在我的情况下,main_border.xml(位于res/drawable文件夹中)看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <solid android:color="#ffffff" />
    <stroke android:width="1dip" android:color="#000000"/>
</shape>