开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜