How to add mapview and buttons in the same layout?
I am trying to create a layout
consists of mapview
and textfield
and buttons
align at the bottom of the layout
I tryied using this xml
file :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/google_maps"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="@string/maps_key" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="5dp"
android:orientation="vertical">
<TextView
android:text="@string/txtLocationDescription"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_width="wrap_content"></TextView>
<EditText
android:id="@+id/editText1"
android:layout_height="wrap_content"
android:layout_width="match_parent"></EditText>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1.0"
android:layout_width="match_parent">
<Button android:id="@+id/Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/btnAddNewLocation"></Button>
<Button android:layout_height="wrap_content"
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_weight="0.5"
android:text="@string/btnCancelAddingLocation"></Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
But I got this error :
09-28 14:49:47.476: ERROR/AndroidRuntime(455): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.uis/com.android.uis.LocationManagementActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.maps.MapView
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
09-28 14开发者_运维知识库:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.os.Handler.dispatchMessage(Handler.java:99)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.os.Looper.loop(Looper.java:123)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread.main(ActivityThread.java:3647)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at java.lang.reflect.Method.invokeNative(Native Method)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at java.lang.reflect.Method.invoke(Method.java:507)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at dalvik.system.NativeStart.main(Native Method)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.maps.MapView
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.createView(LayoutInflater.java:518)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.Activity.setContentView(Activity.java:1657)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.android.uis.LocationManagementActivity.onCreate(LocationManagementActivity.java:10)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): ... 11 more
09-28 14:49:47.476: ERROR/AndroidRuntime(455): Caused by: java.lang.reflect.InvocationTargetException
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at java.lang.reflect.Constructor.constructNative(Native Method)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at android.view.LayoutInflater.createView(LayoutInflater.java:505)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): ... 21 more
09-28 14:49:47.476: ERROR/AndroidRuntime(455): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.google.android.maps.MapView.<init>(MapView.java:291)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.google.android.maps.MapView.<init>(MapView.java:264)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): at com.google.android.maps.MapView.<init>(MapView.java:247)
09-28 14:49:47.476: ERROR/AndroidRuntime(455): ... 24 more
What is the problem and how may I do that ?
You can't put things inside a MapView
. A better solution is to put the MapView
inside a RelativeLayout
and lay out the buttons on top of it inside the top-layer RelativeLayout
.
EDIT:
Basic example:
<RelativeLayout>
<MapView></MapView>
<Button></Button>
<Button></Button>
<TextView></TextView>
*****Any other layout you want ****
</RelativeLayout>
Your activity should extend MapACtivity for this exception not to occur. look at this line in your crash log.
MapViews can only be created inside instances of MapActivity.
Use relativelayout, alignparent variants.
精彩评论