代码之家  ›  专栏  ›  技术社区  ›  Natalie Carr

在谷歌地图Android顶部显示按钮

  •  4
  • Natalie Carr  · 技术社区  · 10 年前

    嗨,我正在尝试在谷歌地图上显示一个按钮,请有人告诉我我如何做到这一点,因为我尝试了不同的位置,我的按钮显示在地图后面。

    这是我迄今为止的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/BlanchedAlmond" >
    
    <Button
        android:id="@+id/startActivityButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal|center_vertical"   
        android:onClick="startActivity"
        android:text="@string/start_activity" 
        android:layout_alignParentBottom="true"  />
    
       <fragment        
        android:id="@+id/map"      
        android:name="com.google.android.gms.maps.MapFragment"        
        android:layout_width="wrap_content"        
        android:layout_height="wrap_content"
        android:layout_above="@id/startActivityButton"    
        /> 
    
    </RelativeLayout>
    
    7 回复  |  直到 10 年前
        1
  •  8
  •   Auto-Droid ツ    10 年前

    如果您在java文件中尝试另一种解决方案,您可以在onCreate方法中尝试下面的代码,这将在谷歌地图上创建一个按钮

    Button button = new Button(this);
    button.setText("Click me");
    addContentView(button, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    
    button.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i=new Intent(this,SecondActivity.class);
                        startActivity(i);
    
                    }
                });
    
        2
  •  4
  •   Lokesh    10 年前

    使用此项:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/BlanchedAlmond"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/startActivityButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal|center_vertical"
            android:onClick="startActivity"
            android:text="@string/start_activity" />
    
        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/startActivityButton"
           />
    
    </RelativeLayout>
    
        3
  •  3
  •   deathangel908    8 年前

    如果您正在使用 RelativeLayout 重要的是,层的顺序与组件的顺序相同 所以,如果你想在地图上有一个按钮,你需要 第一 放置地图,然后 然后 按钮。

    对的 :

    <RelativeLayout>
        <fragment android:id="@+id/map"/> 
        <Button .../>
    </RelativeLayout>
    

    不准确的 :

    <RelativeLayout>
        <Button .../>
        <fragment android:id="@+id/map"/> 
    </RelativeLayout>
    
        4
  •  2
  •   Anil kumar    10 年前

    试试这个,它可能会帮助你,保持头部

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/BlanchedAlmond"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/startActivityButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal|center_vertical"
            android:onClick="startActivity"
            android:text="@string/start_activity" />
    
        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
    

    要在地图上覆盖按钮,请使用

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/BlanchedAlmond" >
    
        <Button
            android:id="@+id/startActivityButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:gravity="center_horizontal|center_vertical"
            android:onClick="startActivity"
            android:text="@string/start_activity" />
    
        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="wrap_content"
            android:layout_above="@+id/startActivityButton"
            android:layout_height="wrap_content" />
    </RelativeLayout>
    
        5
  •  1
  •   rajshree    10 年前

    使用此。。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:id="@+id/startActivityButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/map"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal|center_vertical"
        android:onClick="startActivity"
        android:text="start_activity" />
    
    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/startActivityButton" />
    

        6
  •  1
  •   cYrixmorten    10 年前

    您尝试过FrameLayout吗?

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/BlanchedAlmond" >
    
    
    
    <fragment        
     android:id="@+id/map"      
     android:name="com.google.android.gms.maps.MapFragment"        
     android:layout_width="wrap_content"        
     android:layout_height="wrap_content"
     android:layout_above="@id/startActivityButton"    
     /> 
    
    <Button
        android:id="@+id/startActivityButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal|center_vertical"   
        android:onClick="startActivity"
        android:text="@string/start_activity" 
        android:layout_alignParentBottom="true"  />
    
    </FrameLayout >
    

    我在应用程序中所做的是在地图显示时在顶部动态添加一个片段。

    MD要求的代码和布局:

    主要XML:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/details"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Turios" >
    
        <android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/display_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <android.support.v4.view.PagerTitleStrip
                android:id="@+id/pager_title_strip"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:background="#333"
                android:paddingBottom="4dp"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingTop="4dp"
                android:textColor="#fff" >
            </android.support.v4.view.PagerTitleStrip>
        </android.support.v4.view.ViewPager>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="20dp"
            android:layout_gravity="bottom"
            android:background="@drawable/shape_background_darkgrey"
            android:padding="5dp" />
    
    </FrameLayout>
    

    Mapoptions XML(我只是在LinearLayout中动态添加按钮):

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:orientation="vertical"
        android:paddingTop="65dp"
        android:paddingRight="10dp" >
    
        <LinearLayout
            android:id="@+id/map_options"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:orientation="vertical">
    
        </LinearLayout>
    
    </RelativeLayout>
    

    代码:

    private FragmentTransaction addMapFragment(FragmentTransaction ft) {
        if (mapsFragment == null) {
            AddressHolder address = (device.isMultiPane()) ? null
                    : getSelectedAddressHolder();
            mapsFragment = GoogleMapFragment.newInstance(address);
            ft.add(R.id.details, mapsFragment, Turios.FRAGMENT_MAP_TAG);
    
            mapsOptionsFragment = new GoogleMapOptionsFragment();
            ft.add(R.id.details, mapsOptionsFragment, FRAGMENT_MAP_OPTIONS_TAG);
        } else {
            ft.attach(mapsFragment);
            ft.attach(mapsOptionsFragment);
        }
        return ft;
    }
    
    @Override public void onTabSelected(Tab tab,
            android.app.FragmentTransaction ft) {
        int position = tab.getPosition();
        FragmentTransaction t = fm.beginTransaction();
    
        ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
    
        if (position == DisplayFragment.NAVIGATION_INDEX) {
    
            if (!device.isMultiPane() && mapsFragment != null
                    && mapsOptionsFragment != null) {
                t.detach(mapsFragment);
                t.detach(mapsOptionsFragment);
            }
    
            if (browserFragment != null) {
                t.detach(browserFragment);
            }
    
        }
    
        if (position == GoogleMapFragment.NAVIGATION_INDEX) {
    
            t = addMapFragment(t);
    
        }
        if (position == BrowserFragment.NAVIGATION_INDEX) {
    
            if (browserFragment == null) {
                browserFragment = new BrowserFragment();
                t.add(R.id.details, browserFragment,
                        Turios.FRAGMENT_BROWSER_TAG);
            } else {
                t.attach(browserFragment);
            }
        }
    
        t.commit();
    
    }
    
    @Override public void onTabUnselected(Tab tab,
            android.app.FragmentTransaction ft) {
        int position = tab.getPosition();
        FragmentTransaction t = fm.beginTransaction();
    
        if (position == GoogleMapFragment.NAVIGATION_INDEX) {
    
            t.detach(mapsFragment);
            t.detach(mapsOptionsFragment);
    
        }
        if (position == BrowserFragment.NAVIGATION_INDEX) {
    
            t.detach(browserFragment);
        }
        t.commit();
    }
    
        7
  •  0
  •   Auto-Droid ツ    10 年前

    执行以下操作:

    <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/BlanchedAlmond"
            android:orientation="vertical" >
    
       <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
    
            <Button
                android:id="@+id/startActivityButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal|center_vertical"
                android:onClick="startActivity"
                android:text="@string/start_activity" />
        </LinearLayout>
    
        <fragment
                android:id="@+id/map"
                android:name="com.google.android.gms.maps.MapFragment"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/startActivityButton"
               />
        </RelativeLayout>