1

私は MapFragment クラスを持っています。これは、呼び出すと全画面表示になります。

この質問から、水平レイアウトを強制するには Android マニフェストの変更が必要になることがわかりました。ただし、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

このようにマニフェストファイルでアクティビティを定義します

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

これを試して:

getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)

このリンクもチェックしてください。

于 2013-02-11T07:11:18.063 に答える