2013-02-11 49 views
1

我有一個MapFragment類,在調用它時會佔用整個屏幕。僅將橫向模式設置爲安卓Google地圖片段

this question,我知道強制水平佈局需要更改Android Manifest。但是,如果它適用於MapFragment類,該如何實現呢?

這是我爲我的地圖顯示XML,如果它可以幫助:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<fragment 
    android:id="@+id/fragment_map" 
    android:name=".com.fragments.MapFragment" 
    class="com.fragments.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:tag="tag_fragment_map" /> 

</FrameLayout> 

回答

3

可以擴展MapFragment類。當調用onAttach()時,將一個活動的當前方向(通過調用getActivity().getRequestedOrientation())存儲爲一個整數,然後將父級方向設置爲橫向。這是暫時的。如果您的MapFragment不再使用,它​​將設置父母的舊方向。

public class DummyMapFragment extends MapFragment 
{ 

    private int activityOrientation; 

    @Override 
    public void onAttach(Activity arg0) { 

     super.onAttach(arg0); 

     activityOrientation = arg0.getRequestedOrientation(); 

       arg0.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    } 


    @Override 
    public void onStop() { 
     Activity parent = getActivity(); 

     if(parent != null) 
        getActivity().setRequestedOrientation(activityOrientation); 

     super.onStop(); 

    } 
} 
+0

感謝您給我們!似乎有助於解決我的問題! =) – lyk 2013-02-11 07:59:22

+0

嗨,對不起,我剛剛意識到,一旦我做了.replace()將mapfragment更改爲另一個片段,那麼橫向位置仍然存在...是否有方法將其恢復正常? – lyk 2013-02-11 08:32:32

+0

當然,我會更新答案 – Geros 2013-02-11 08:41:07

1

試試這個:

getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE) 

還要檢查這個link.

1

在清單文件中定義的活動這樣

<activity 
     android:name=".yourMapActivity" 
     android:label="@string/title_activity_edit_profile" 
     android:screenOrientation="landscape" > 
+0

我的問題是片段不在活動......無論如何謝謝 – lyk 2013-02-11 08:23:40

+0

片段始終附加在活動內。我想你有你的FrameLayout附加在哪個DummyMapFragment應該附加的活動。 – 2013-02-11 08:29:15

+0

但我只希望我的地圖片成爲風景。我不希望我的其他碎片一旦被我替換,就會變成風景。 – lyk 2013-02-11 08:31:42

相關問題