我在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:
如您所见,小部件周围没有边框,而下方的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
周围放置边框?
答案 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>