1

我有一个 MapFragment 类,它会在调用它时占据全屏。

这个问题中,我了解到强制水平布局将需要更改 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>
4

3 回答 3

4

您可以扩展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();

    }
}
于 2013-02-11T07:13:59.073 回答
1

试试这个:

getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)

另请检查此链接。

于 2013-02-11T07:11:18.063 回答
1

像这样在清单文件中定义活动

<activity
        android:name=".yourMapActivity"
        android:label="@string/title_activity_edit_profile"
        android:screenOrientation="landscape" >
于 2013-02-11T07:39:41.327 回答