回答

38

我已決定重寫onCreateView並封裝在代碼中的地圖。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) { 
    View mapView = super.onCreateView(inflater, viewGroup, bundle); 
    RelativeLayout view = new RelativeLayout(getActivity()); 
    view.addView(mapView, new RelativeLayout.LayoutParams(-1, -1)); 
    // working with view 
    return view; 
} 

它按我的需要工作。

+5

百萬上漲 – brainmurphy1 2013-03-05 03:09:54

5

當地圖和相對佈局match_parent爲寬度和高度時,嘗試將您的地圖放在具有相對佈局的框架佈局中。在相對佈局中放置所有您想要的擴展控件。這樣,這個意志就會坐在地圖上。

一些東西像:

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/title_gray_background" > 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:paddingLeft="10dp" 
      android:text="@string/tasks" 
      android:paddingRight="3dp" 
      android:textStyle="bold" 
      android:textSize="18sp" 
      android:textColor="@color/my_even_darker_gray" /> 

     <Button 
      android:id="@+id/bLocateMe" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="3dp" 
      android:background="@drawable/locate_me_button_selector" 
      android:clickable="true" 
      android:onClick="locateMeButtonOnClick" 
      android:text="@string/locate_me" 
      android:textColor="@color/my_white" /> 

    </RelativeLayout> 

    <fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 
+1

謝謝您的回答,但最後我想出了自己的解決方案中。 – 2013-03-02 14:25:12

0

我做了以下內容:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!--suppress AndroidDomInspection --> 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 

    /> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     > 
    <ImageButton 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_marginRight="10sp" 
      android:layout_marginTop="10sp" 
      android:src="@android:drawable/ic_menu_mylocation" 
      /> 
</RelativeLayout> 

1

的觀點從MapFragment的onCreateView返回是一個FrameLayout裏。因此,讓我們使用它,不需要添加另一個佈局(我們將減少視圖層次結構)。

 @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) { 
     FrameLayout mapView = (FrameLayout) super.onCreateView(inflater, viewGroup, bundle); 
     mapView.add(someView); 
     return view; 
    } 
1

使用此代碼,以添加布局上面的圖

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View mapView = super.onCreateView(inflater, container, savedInstanceState); 
    @SuppressLint("InflateParams") 
    FrameLayout view = (FrameLayout) inflater.inflate(R.layout.fragment_map, null); 
    view.addView(mapView, 0, new RelativeLayout.LayoutParams(-1, -1)); 
    return view; 
} 
相關問題