2013-02-11 4 views
1

У меня есть класс MapFragment, который будет отображаться в полноэкранном режиме при его вызове.Настройка ландшафтного режима только на Android Google Map Fragment

От this question, я понимаю, что для форсирования горизонтальной компоновки потребуются изменения в манифесте 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> 

ответ

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

+0

Привет, я просто понял, что как только я сделаю .replace(), чтобы изменить mapfragment на другой фрагмент, положение ландшафта остается ... есть ли способ изменить его обратно к нормальному? – lyk

+0

Конечно, я обновлю ответ – Geros

1

Попробуйте это:

getActivity().setRequestedScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE) 

Также проверьте этот link.

1

определяют активность в файле манифеста, как этот

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

Мой вопрос включен фрагменты не по активности ... спасибо в любом случае – lyk

+0

Фрагмент всегда прилагается к этой деятельности. я полагаю, что у вас есть активность, с которой связан ваш FrameLayout и с которым должен быть прикреплен DummyMapFragment. –

+0

Но я хочу, чтобы мой mapfragment был ландшафтом. Я не хочу, чтобы мои другие фрагменты были пейзажами, когда я его заменил. – lyk

Смежные вопросы