如何仅将应用程序片段设置为纵向模式?

时间:2014-02-22 05:18:02

标签: android android-fragments fragment android-fragmentactivity

我有一个Android应用程序,它有一个主要活动和3个片段,它们是标签。我希望应用程序始终保持纵向模式,但我似乎无法使其正常工作。这是我尝试过的,根据另一个堆栈溢出帖子,但我不确定我做错了什么......如果使用碎片需要不同吗?

    <activity
        android:name="com.tutorial.test.activities.act1"
        android:label="@string/app_name" 
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

谢谢!

编辑:ViewPager在FragmentActivity上,我正在为其设置screenOrientation。

2 个答案:

答案 0 :(得分:14)

试试这个..

您可以尝试以编程方式

在java中rootView之后添加此行getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

对于 Ex

View rootView = inflater.inflate(R.layout.activityxml, container, false);       
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

并且在您的清单中,将android:configChanges="orientation|keyboardHidden"更改为android:configChanges="keyboardHidden"

<activity
        android:name="com.tutorial.test.activities.act1"
        android:label="@string/app_name" 
        android:screenOrientation="portrait"
        android:configChanges="keyboardHidden" >

答案 1 :(得分:0)

Orientation属性是每个活动,因此您可以仅为包含该片段的活动声明方向,使其处于横向状态,其余活动将保持原样。

getActivity()。setRequestedOrientation(             ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

或者你可以在清单中声明

<activity android:name=".Control" android:screenOrientation="portrait"></activity>